Set 2 - siruri
1. Se citeşte un vector cu n componente întregi. Se cere:
a) Să se ordoneze crescător elementele vectorului;
b) Să se permute circular stânga elementele vectorului ordonat cu o poziţie.
var a:array[1..100]of integer;
n:byte;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
end;
procedure afisare;
var i:byte;
begin
for i:=1 to n do
write(a[i],' ');
writeln;
end;
procedure sortare;
var aux:integer;i,j:byte;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if(a[i]>a[j]) then begin
aux:=a[i];
a[i]:=a[j];
a[j]:=aux;
end;
end;
procedure permutare;
var i:byte;x:integer;
begin
x:=a[1];
for i:=1 to n-1 do
a[i]:=a[i+1];
a[n]:=x;
end;
begin
citire;
writeln('elementele vectorului');
afisare;
writeln('elementele in ordine crescatoare');
sortare;afisare;
writeln('dupa permutarea cu o pozitie la stanga');
permutare;
afisare;
end.
2. Se citeşte un vector cu n componente întregi. Se cere:
a) Să se elimine din vector elementele nule dacă acestea există;
b) Să se înlocuiască fiecare element al noului vector cu media aritmetică a celorlalte elemente din vector.
var a:array[1..100]of integer;
n:byte;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
end;
procedure afisare;
var i:byte;
begin
for i:=1 to n do
write(a[i],' ');
writeln;
end;
procedure exnule;
var b:array[1..100]of integer;
i,k:byte;
begin
k:=0;
{introducem in vectorul b toate elementele diferite de 0}
writeln('vectorul fara elementele nule');
for i:=1 to n do
if a[i]<>0 then begin
k:=k+1;
b[k]:=a[i];
end;
for i:=1 to k do write(b[i],' ');
writeln;
end;
procedure medie;
var s:integer;i,j:byte;
begin
for i:=1 to n do
begin
s:=0;
for j:=1 to n do
if(i<>j) then s:=s+a[j];
write(s/(n-1):5:2,' ');
end;
writeln;
end;
begin
citire;
writeln('elementele vectorului');
afisare;
exnule;
medie;
end.
3. Se dă un şir x de n elemente întregi. Să se caute ultimul element impar mai mare decât 15.
type vector=array[1..100]of integer;
var a:vector;
n:byte;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]);
end;
end;
procedure cautare;
var i:byte;
begin
i:=n;
while i>1 do begin
if (a[i]>15)and(a[i] mod 2=1) then begin
write(a[i]);halt;
end;
i:=i-1;
end;
writeln('nu exista un element impar mai mare ca 15 in sir');
end;
begin
citire;
cautare;
end.
4. Să se scrie un program care :
a) citeşte un vector cu n componente numere reale
b) sterge un element din vector care se află pe o poziţie dată k.
var a:array[1..100]of real;
n,k:byte;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]); end;
write('k=');readln(k);
end;
procedure afisare;
var i:byte;
begin
for i:=1 to n do
write(a[i]:5:2);
writeln;
end;
procedure sterge;
var i:byte;
begin
for i:=k to n-1 do
a[i]:=a[i+1];
n:=n-1;
end;
begin
citire;
sterge;
afisare;
end.
5. Să se scrie un program care determină media aritmetică a elementelor pare dintr-un vector folosind un subprogram (procedură sau funcţie).
var a:array[1..100]of integer;
n:byte;
procedure medie;
var i,nr:byte;s:real;
begin
s:=0;nr:=0;
for i:=1 to n do
if a[i] mod 2= 0 then begin
nr:=nr+1;
s:=s+a[i];
end;
writeln(s/nr:5:2);
end;
procedure citire;
var i:byte;
begin
write('n=');readln(n);
for i:=1 to n do begin
write('a[',i,']=');readln(a[i]); end;
end;
begin
citire;
medie;
end.
6. Se citeşte de la tastatură un număr natural nenul n şi alte n numere întregi . Se cere :
a) Suma elementelor pare de pe poziţii impare
b) Media aritmetică a elementelor pozitive.
var a:array[1..100]of integer;
n:byte;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
end;
procedure suma_elp;
var s:longint;i:byte;
begin
s:=0;
for i:=1 to n do
if (a[i] mod 2=0)and(i mod 2=1) then s:=s+a[i];
writeln(s);
end;
procedure medie_poz;
var s:real;i,c:byte;
begin
s:=0;c:=0;
for i:=1 to n do
if a[i]>0 then begin
s:=s+a[i];
c:=c+1;
end;
writeln(s/c:7:2);
end;
begin
citire;
suma_elp;
medie_poz;
end.
7. Se citeşte de la tastatură un număr natural nenul n şi alte n numere întregi. Se cere să se afişeze câte elemente prime conţine şirul citit ( se va folosi un subprogram pentru a stabili că un număr este prim sau nu).
var n:byte;
a:array[1..100]of longint;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
end;
function prim(n:longint):boolean;
var i:longint;
begin
prim:=true;
if n<=1 then prim:=false;
for i:=2 to n div 2 do
if n mod i=0 then prim:=false;
end;
procedure calcul;
var i,c:byte;
begin
c:=0;
for i:=1 to n do
if prim(a[i]) then c:=c+1;
writeln('nr de numere prime=',c);
end;
begin
citire;
calcul;
end.
8. Se citeşte de la tastatură un număr natural nenul n şi alte n numere întregi. Se cere să se afişeze numărul de apariţii în şir ale unui număr citit de la tastatură.
var n,k:byte;
a:array[1..100]of longint;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
write('k=');readln(k);
end;
procedure aparitii;
var i,c:byte;
begin
c:=0;
for i:=1 to n do
if a[i]=k then c:=c+1;
write('nr de aparitii=',c);
end;
begin
citire;
aparitii;
end.
9. Se citeşte de la tastatură un număr natural nenul n şi alte n numere întregi. Se cere să se afişeze valoarea minimă din şir , precum şi numărul său de apariţii în cadrul şirului.
var n,k:byte;
a:array[1..100]of longint;
min:longint;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
end;
procedure minim;
var i:byte;
begin
min:=a[1];
for i:=1 to n do
if a[i]<min then min:=a[i];
writeln('min=',min);
end;
procedure aparitii;
var i,c:byte;
begin
c:=0;
for i:=1 to n do
if a[i]=min then c:=c+1;
write('nr de aparitii=',c);
end;
begin
citire;
minim;
aparitii;
end.
10. Se citeşte un vector cu n componente numere reale. Să se înlocuiască ultimele k elemente ale vectorului cu valoarea –1. Valoarea k este dată de la tastatură (k<n).
var n,k:byte;
a:array[1..100]of longint;
procedure citire;
var i,j:byte;
begin
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
write('k=');readln(k);
end;
procedure inlocuire;
var i:byte;
begin
for i:=k to n do
a[i]:=-1;
end;
procedure afisare;
var i:byte;
begin
for i:=1 to n do
write(a[i],' ');
writeln;
end;
begin
citire;
inlocuire;
afisare;
end.
11. 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 a:array[1..100]of integer;
n:byte;
function prim(n:longint):boolean;
var i:longint;
begin
prim:=true;
if n<=1 then prim:=false;
for i:=2 to n div 2 do
if n mod i=0 then prim:=false;
end;
procedure citire;
var i:byte;
begin
n:=1;
write('a[1]=');readln(a[1]);
while(a[n]<>13)do begin
n:=n+1;
write('a[',n,']=');readln(a[n]);
end;
n:=n-1;
end;
procedure afisare;
var i:byte;
begin
for i:=1 to n do write(a[i],' ');
writeln;
end;
procedure prime;
var c,i:byte;
begin
c:=0;
for i:=1 to n do
if prim(a[i]) then begin
write(a[i],' ');
c:=c+1;
end;
writeln;
writeln('sunt ',c,' numere prime');
writeln('sunt ',n-c,' numere nu sunt prime');
end;
begin
citire;
writeln('numere prime');
prime;
end.