Proceduri
1. Se citesc de la tastatură elemente până la introducerea caracterului *. Să se afişeze in ordine inversă caracterele citite, fără a se afişa asteriscul.
procedure cuvant;
var c:char;
begin
read(c);
if c<>'*' then begin cuvant;write(c);end;
end;
begin
cuvant;
end.
Modificati programul astfel încât să se afișeze și *.
procedure cuvant;
var c:char;
begin
read(c);
if c<>'*' then cuvant;
write(c);
end;
begin
cuvant;
end.
2. Se citeşte de la tastatură un număr n. Să se afişeze numerele de la 1..n şi numerele de la n..1 folosind subprograme recursive. Atenţie! Fiecare cerinţă se poate realiza prin 2 metode. Noi vom prezenta câte o metodă pentru fiecare cerinţă.
var n:byte;
procedure afisare(i:byte);
begin
write(i,' ');
if(i<n)then afisare(i+1);
end;
procedure afisareinv(i:byte);
begin
if(i<n) then afisareinv(i+1);
write(i,' ');
end;
begin
write('n=');readln(n);
afisare(1);
writeln;
afisareinv(1);
end.
3. Se citesc de la tastatură cele n elemente intregi ale unui vector. Să se afişeze elementele vectorului în ordinea citirii şi în ordinea inversă a citirii.
var n:byte;
a:array[1..100]of integer;
procedure afisare(i:byte);
begin
write(a[i],' ');
if(i<n)then afisare(i+1);
end;
procedure afisareinv(i:byte);
begin
if(i<n) then afisareinv(i+1);
write(a[i],' ');
end;
procedure citire(i:integer);
begin
write('a[',i,']=');readln(a[i]);
if(i<n)then citire(i+1);
end;
begin
write('n=');readln(n);
citire(1);
afisare(1);
writeln;
afisareinv(1);
end.
4. Se citesc de la tastatură cele n elemente întregi ale unui vector. Să se afişeze valoarea minimă din şir.
var n:byte;
a:array[1..100]of integer;m:integer;
procedure min(i:byte; var m:integer);
begin
if(m>a[i])then m:=a[i];
if(i<n)then min(i+1,m);
end;
procedure afisare(i:byte);
begin
write(a[i],' ');
if(i<n)then afisare(i+1);
end;
procedure citire(i:integer);
begin
write('a[',i,']=');readln(a[i]);
if(i<n)then citire(i+1);
end;
begin
write('n=');readln(n);
citire(1);
afisare(1);
writeln;
m:=a[1];
min(1,m);
writeln('min=',m);
end.
5. Se citesc de la tastatură n numere întregi. Afişaţi numărul de numere cu valoare minimă şi poziţiile unde se găsesc acestea în şir.
var n:byte;
a:array[1..100]of integer;m:integer;
procedure min(i:byte; var m:integer);
begin
if(m>a[i])then m:=a[i];
if(i<n)then min(i+1,m);
end;
procedure afisare(i:byte);
begin
write(a[i],' ');
if(i<n)then afisare(i+1);
end;
procedure citire(i:integer);
begin
write('a[',i,']=');readln(a[i]);
if(i<n)then citire(i+1);
end;
function nrmin(n:byte;m:integer):byte;
begin
if(n=0)then nrmin:=0
else if(m=a[n])then nrmin:=nrmin(n-1,m)+1
else nrmin:=nrmin(n-1,m);
end;
procedure pozmin(i:byte;m:integer);
begin
if(a[i]=m)then write(i,' ');
if(i<n)then pozmin(i+1,m);
end;
begin
write('n=');readln(n);
citire(1);
afisare(1);
writeln;
m:=a[1];
min(1,m);
writeln('min=',m);
writeln('nr de aparitii ale min=',nrmin(n,m));
writeln('poz pe care apare min');
pozmin(1,m);
end.
6. Se citesc de la tastatură n numere. Să se afişeze media aritmetică a elementelor pare din şir.
var n:byte;
a:array[1..100]of integer;s:longint;c:byte;
procedure afisare(i:byte);
begin
write(a[i],' ');
if(i<n)then afisare(i+1);
end;
procedure citire(i:integer);
begin
write('a[',i,']=');readln(a[i]);
if(i<n)then citire(i+1);
end;
procedure calcul(i:integer;var s:longint;var c:byte);
begin
if(a[i]mod 2=0) then begin s:=s+a[i];c:=c+1;end;
if(i<n)then calcul(i+1,s,c);
end;
begin
write('n=');readln(n);
citire(1);
afisare(1);
writeln;
s:=0;c:=0;
calcul(1,s,c);
writeln('media elementelor pare=',s/c:5:2);
end.
7. Se citesc de la tastatură n numere. Să se afişeze valoarea maximă din şir şi poziţiile pe care se găsesşte aceasta în şir.
var n:byte;
a:array[1..100]of integer;m:integer;
procedure max(i:byte; var m:integer);
begin
if(m<a[i])then m:=a[i];
if(i<n)then max(i+1,m);
end;
procedure afisare(i:byte);
begin
write(a[i],' ');
if(i<n)then afisare(i+1);
end;
procedure citire(i:integer);
begin
write('a[',i,']=');readln(a[i]);
if(i<n)then citire(i+1);
end;
procedure pozmax(i:byte;m:integer);
begin
if(a[i]=m)then write(i,' ');
if(i<n)then pozmax(i+1,m);
end;
begin
write('n=');readln(n);
citire(1);
afisare(1);
writeln;
m:=a[1];
max(1,m);
writeln('max=',m);
writeln('poz pe care apare max');
pozmax(1,m);
end.
8. Se citesc de la tastatură n numere. Câte numere prime se găsesc în şir?
var n:byte;
a:array[1..100]of integer;s:longint;c:byte;p:boolean;
procedure afisare(i:byte);
begin
write(a[i],' ');
if(i<n)then afisare(i+1);
end;
procedure citire(i:byte);
begin
write('a[',i,']=');readln(a[i]);
if(i<n)then citire(i+1);
end;
procedure prim(i:byte;x:integer;var p:boolean);
begin
if(x<2) then p:=false
else
if(i<=round(x/2)) then begin
if (x mod i=0) then p:=false;
prim(i+1,x,p);
end;
end;
procedure calcul(i:byte;var c:byte);
begin
p:=true;
prim(2,a[i],p);
if(p=true)then c:=c+1;
if(i<n)then calcul(i+1,c);
end;
begin
write('n=');readln(n);
citire(1);
afisare(1);
writeln;
c:=0;
calcul(1,c);
writeln('nr de nr prime=',c);
end.