Set 1 - structuri de control
1. Se citeşte un număr natural n. Să se determine cifra maximă din număr, folosind un subprogram. Exemplu: Dacă n=7934 , atunci cifra maximă este 9.
var n:longint;
function maxim(n:longint):byte;
var u:byte;max:shortint;
begin
max:=-1;
repeat
u:=n mod 10;
n:=n div 10;
if max<u then max:=u;
until n=0;
maxim:=max;
end;
begin
write('n=');readln(n);
writeln('cifra max=',maxim(n));
end.
2. Se introduce de la tastatură un număr întreg n. Se cere să se calculeze şi să se afişeze:
a) media aritmetică a cifrelor pare;
b) produsul cifrelor impare
var n:longint;
procedure medie(n:longint);
var u,c:byte;s:real;
begin
s:=0; c:=0;
while(n<>0) do begin
u:=n mod 10;
n:=n div 10;
if u mod 2=0 then begin
s:=s+u;
c:=c+1;
end;
end;
writeln('media cifrelor pare=',s/c:5:2);
end;
procedure produs(n:longint);
var p:integer;u:byte;
begin
p:=1;
while n<>0 do begin
u:=n mod 10;
n:=n div 10;
if u mod 2=1 then p:=p*u;
end;
writeln('produsul cifrelor impare=',p);
end;
begin
write('n=');readln(n);
medie(n);
produs(n);
end.
3. Se citeşte de la tastatură un număr întreg mai mare sau egal cu 1000. Se cere să se stabilească dacă numărul dat este palindrom sau nu, folosind un subprogram .
var n:longint;
procedure palindrom;
var u:byte;m,n1:longint;
begin
n1:=n;
m:=0;
repeat
u:=n mod 10;
n:=n div 10;
m:=m*10+u;
until n=0;
if n1=m then write('palindrom')
else write('nu e palindrom');
end;
begin
write('n=');readln(n);
if n<1000 then begin write('n trebuie sa fie >=1000');halt;end;
palindrom;
end.
4. Se citeşte de la tastatură un număr întreg. Se cere să se stabilească dacă este perfect sau nu, folosind un subprogram. Un număr este perfect dacă este egal cu suma divizorilor săi proprii plus 1.
var n:longint;
function perfect(n:longint):boolean;
var s:longint;i:longint;
begin
s:=0;
for i:=1 to n div 2 do
if n mod i=0 then s:=s+i;
if n=s then perfect:=true
else perfect:=false;
end;
begin
write('n=');readln(n);
if perfect(n) then writeln('numar perfect')
else writeln('numarul nu e perfect');
end.
5. Se citeşte de la tastatură un număr întreg . Se cere să se calculeze şi să se afişeze suma divizorilor proprii precum şi numărul acestora.
var n:longint;
procedure divizori;
var i,s:longint;c:byte;
begin
s:=0;c:=0;
for i:=2 to n div 2 do
if(n mod i=0) then begin
writeln(i);
s:=s+i;
c:=c+1;
end;
writeln('numar divizori=',c);
writeln('suma divizori=',s);
end;
begin
write('n=');readln(n);
divizori;
end.
6. Se citeşte de la tastatură un număr natural nenul n. Se cere să se calculeze şi să se afişeze următoarea sumă : 1+1*2+1*2*3+1*2*3*4+...+1*2*...n .
var n,s,p:longint;
procedure calcul;
var i:byte;
begin
s:=0;p:=1;
for i:=1 to n do
begin
p:=p*i;
s:=s+p;
end;
writeln(s);
end;
begin
write('n=');readln(n);
calcul;
end.
7. Se citeşte de la tastatură un număr natural nenul n. Se cere să se calculeze şi să se afişeze următoarea sumă : 1+1/(1*2)+1/(1*2*3)+1/(1*2*3*4)+...+1/(1*2*...n) .
var n:longint;s,p:real;
procedure calcul;
var i:byte;
begin
s:=0;p:=1;
for i:=1 to n do
begin
p:=p*i;
s:=s+1/p;
end;
writeln(s:7:2);
end;
begin
write('n=');readln(n);
calcul;
end.