Sunteți pe pagina 1din 10

1.

Sa se scrie un program care calculeaza elementele


multimilor AUB si A\B.
Program P1;

var a,b,c:set of byte;

f:text;

i:byte;

begin

assign(f,'in.txt');

reset(f);

a:=[];

while not eoln(f) do

begin

read(f,i);

a:=a+[i];

end;

readln(f);

b:=[];

while not eoln(f) do

begin

read(f,i);

b:=b+[i];

end;

close(f);

c:=a+b;

for i:=0 to 255 do

if i in c then write(i,' ');


writeln;

c:=a-b;

for i:=0 to 255 do

if i in c then write(i,' ');

end.

2.  De scris un subprogram care afiseaza modalitatea 


de plata, folosind un numar minim de bancnote,  a 
unei class="style35">sume S de lei. Numarul de 
bancnote si valoarealor se citeste in fisierul text 
bani.in, care contine pe fiecare linie cite 2 valori: 
prima indica valoarea bancnotei si a doua 
numarul de bancnote cu valoarea data..
Program P2;

var a,b,num:array[1..7] of integer;

s,i:integer;

f:text;

begin

assign(f,'bani.in');reset(f);

for i:=1 to 7 do readln(f,a[i],b[i]);

close(f);

write('s=');readln(s);

for i:=7 downto 1 do

begin

num[i]:=s div a[i];s:=s mod a[i];

if num[i]>b[i] then begin s:=s+(num[i]-b[i])*a[i];num[i]:=b[i];


end;

end;

if s<>0 then

writeln('Nu este posibil de efectuat plata cu bancnotele

respective!')

else begin

writeln('Suma este achitata cu urmatoarele bancnote:');

for i:=7 downto 1 do if num[i]<>0 then

writeln(a[i],'-',num[i]);

end;

end.

3.  Sa se scrie un program care contine cuvintele textuluiin


ordine alfabetica si numarul lor de aparitii.
Program P3;

var f:text;

a:array[1..100] of string;

s:string;

i,k,n:byte;

begin

assign(f,'Intrare.txt');reset(f);

i:=1;

while not eof(f) do

begin

readln(f,s);s:=s+' ';

while pos(' ',s)<>0 do

begin
a[i]:=copy(s,1,pos(' ',s)-1);delete(s,1,pos(' ',s));

i:=i+1;

end;

end;

close(f);

n:=i-1;

{Sortarea cuvintelor in ordine alfabetica}

for k:=1 to n-1 do

for i:=1 to n-1 do

if a[i]>a[i+1] then

begin

s:=a[i];a[i]:=a[i+1];a[i+1]:=s;

end;

{Determinarea numarului de aparitii al fiecarui cuvint}

assign(f,'Iesire.txt');rewrite(f);

k:=1;

for i:=1 to n-1 do

if a[i]=a[i+1] then k:=k+1

else

begin

writeln(f,a[i],' ',k);

k:=1;

end;

writeln(f,a[n],' ',k);

close(f);

end.
Proceduri si functii

1. Fie dat tabloul unidimensional a[1..10] of real, de determinat


suma elementelor acestui tablou utilizind procedura.
Program P1;

type tab=array[1..10] of real;

var a:tab;

i,n:integer;

s:real;

procedure suma(var x:tab; n:integer; var sum:real);

var i:integer;

begin

sum:=0;

for i:=1 to n do

sum:=sum+x[i];

end;

begin{main}

write('n='); readln(n);

write('dati elementele tabloului:');

for i:=1 to n do readln(a[i]);

suma(a,n,s);

write('s=',s:7:2);

end.
2. Fie dat tabloul unidimensional a[1..10]of real, de determinat
suma elementelor acestui tablou utilizind o functie.
Program P2;

type tab=array[1..10] of real;

var a:tab;

i,n:integer;

s:real;

function suma(x:tab; n:integer):real;

var i:integer;

z:real;

begin

z:=0;

for i:=1 to n do

z:=z+x[i];

suma:=z;

end;

begin{main}

write('n='); readln(n);

write('dati elementele tabloului:');

for i:=1 to n do readln(a[i]);

s:=suma(a,n);

write('s=',s:5:2);

end.
3. De alcatuit un subprogram ce determina suma elementelor
pozitive si produsul elementelor negative din a[1..10] of real de
folosit procedura.

Program P3;

type tab=array[1..10] of real;

var a:tab;

i,n:integer;

s,p:real;

procedure suma(var x:tab; n:integer; var sum:real);

var i:integer;

begin

s:=0;

for i:=1 to n do

if x[i]>0 then sum:=sum+x[i];

end;

procedure prod(var x:tab; n:integer; var prod:real);

var i:integer;

begin

p:=1;

for i:=1 to n do

if x[i]<0 then prod:=prod*x[i];

end;

begin{main}

write('n='); readln(n);

write('dati elementele tabloului:');

for i:=1 to n do readln(a[i]);


suma(a,n,s);

write('s=',s:5:2);

prod(a,n,p);

write('p=',p:5:2);

end.

4. De creat un subprogram ce determina perimetrul minim si


locul lui in tabloul a[1..10] of real.
Program P4;

type tab=array[1..10] of real;

var a:tab;

locul,i,n:integer;

min:real;

function minim(var x:tab; k:integer):real;

var j:integer;

begin

min:=x[1]; locul:=1;

for j:=2 to k do begin

if x[j]<min then

begin

min:=x[j]; locul:=j;

end;

end;

minim:=min;

end;

begin
write('n='); readln(n);

for i:=1 to n do readln(a[i]);

min:=minim(a,n);

writeln('min=',min:5:2,'locul=',locul);

end.

5. De creat un subprogram.
1.de citire a unui tablou de la tastatura a unui numar intreg.
2.de afisare a continutului unui tablou de numere intregi.
3.de inlocuit elementele pare prin 0, impare prin 1.
Program P5;

type tab=array[1..10] of integer;

var a:tab;

i,k,n:integer;

procedure citire(var b:tab; var k:integer);

var i:integer;

begin

write('k='); readln(k);

write('tastati','k','numere:');

for i:=1 to k do read(b[i]);

end;

procedure afisare(var b:tab; k:integer);

var i:integer;

begin

writeln('continutul tabloului:');

for i:=1 to k do
write(b[i],' ');

end;

procedure inlocuire(var x:tab; n:integer);

var i:integer;

begin

for i:=1 to n do

if x[i] mod 2=1 then x[i]:=0

else x[i]:=1;

end;

begin{main}

citire(a,n);

inlocuire(a,n);

write('tabloul obtinut:');

afisare(a,n);

end.

S-ar putea să vă placă și