Informatică, întrebare adresată de vladimirbc, 9 ani în urmă

Elaborati un program cu subprograme recursive care: Afiseaza componentele vectorului pe ecran, calculeaza suma componentelor, inverseaza componentele vectorului, calculeaza suma componentelor pozitive, verifica daca cel putin o componenta a vectorului este negativa, calculeaza produsul componentelor negative, verifica daka cel putin o componenta a vectorului este egala cu un numar dat.


blindseeker90: toate astea in Pascal?
vladimirbc: da, dar macar citeva puncte sa prind firul

Răspunsuri la întrebare

Răspuns de blindseeker90
9
Program Tema;
type
    arr_type=array[1..100] of integer;
var a:arr_type;    
    
procedure afiseaza(arr:arr_type;n:integer);
begin
if n=1 then
begin
write(arr[1]);
write(' ');
end
else
begin
afiseaza(arr,n-1);
write(arr[n]);
write(' ');
end;
end; 

procedure invers(start,n:integer);
var temp:integer;
begin
if start<n then
begin
temp:=a[start];
a[start]:=a[n];
a[n]:=temp;
invers(start+1,n-1);
end
else
end;

function suma(arr:arr_type;n:integer):integer;
begin
if n=1 then
suma:=arr[1]
else
suma:=arr[n]+suma(arr,n-1);
end;

function suma_poz(arr:arr_type;n:integer):integer;
var s:integer;
begin
if n=1 then
begin
if arr[1]>0 then
suma_poz:=arr[1]
else
suma_poz:=0;
end
else
if arr[n]>0 then
suma_poz:=arr[n]+suma_poz(arr,n-1)
else
suma_poz:=suma_poz(arr,n-1);
end;

procedure cauta_neg(arr:arr_type;n:integer);
begin
if n=1 then
begin
if arr[1]<0 then
writeln('Exista cel putin un nr negativ:',arr[1])
else
writeln('Nu exista vreun nr negativ');
end
else
if arr[n]<0 then
writeln('Exista cel putin un nr negativ:',arr[n])
else
cauta_neg(arr,n-1);
end;

function prod_neg(arr:arr_type;n:integer):integer;
var s:integer;
begin
if n=1 then
begin
if arr[1]<0 then
prod_neg:=arr[1]
else
prod_neg:=1;
end
else
if arr[n]<0 then
prod_neg:=arr[n]*prod_neg(arr,n-1)
else
prod_neg:=prod_neg(arr,n-1);
end;

procedure cauta_val(arr:arr_type;n:integer;val:integer);
begin
if n=1 then
begin
if arr[1]=val then
writeln('Exista valoarea respectiva cel putin o data in vector')
else
writeln('Nu exista acea valoare in vector');
end
else
if arr[n]=val then
writeln('Exista valoarea respectiva cel putin o data in vector')
else
cauta_val(arr,n-1,val);
end;



var  i,n,x:integer;
Begin
writeln('Introduceti dimensiune vector: ');
readln(n);
writeln('Introduceti elementele:');
for i:=1 to n do
read(a[i]);

afiseaza(a,n);
writeln('Suma elementelor este:',suma(a,n));
writeln('Suma elementelor pozitive este:',suma_poz(a,n));
writeln('Produsul numerelor negative este:',prod_neg(a,n));
cauta_neg(a,n);

writeln('Introduceti valoarea de cautat in sir:');
readln(x);
cauta_val(a,n,x);

writeln('Elementele inversate sunt: ');
invers(1,n);
afiseaza(a,n);
End.

blindseeker90: am pus inversarea de elemente ultima pentru ca inverseaza elementele vectorului si te poate pune in dificultate cand gandesti celelalte probleme
vladimirbc: super
Alte întrebări interesante