Set 5 - fisiere

1. Fisierul date.in contine pe fiecare linie inaltimea si numele unei persoane  separate printr-un spatiu. Se cere:

 a) sa se ordoneze alfabetic persoanele inscrise in fisier

 b) Sa se afiseze inaltimea medie a acestora

 type persoana=record

     nume:string[40];

     inaltime:real;

     end;

var a:array[1..100] of persoana;

    n:byte;

    f:text;

procedure citire;

begin

Assign(f,'date.in');reset(f);

n:=0;

while not eof(f) do

      begin

      n:=n+1;

      readln(f, a[n].inaltime,a[n].nume);

      end;

close(f);

end;

procedure sortare_alfabetic;

var i,j:byte;aux:persoana;

begin

for i:=1 to n-1 do

    for j:=i+1 to n do

        if a[i].nume>a[j].nume then

           begin

           aux:=a[i];

           a[i]:=a[j];

           a[j]:=aux;

           end;

end;

procedure afisare;

var i:byte;

begin

for i:=1 to n do

    writeln(a[i].nume,' ',a[i].inaltime:5:2);

writeln;

end;

procedure inaltime_medie;

var s:real;i:byte;

begin

s:=0;

for i:=1 to n do

    s:=s+a[i].inaltime;

writeln('inaltimea medie=',s/n);

end;

BEGIN

citire;

afisare;

sortare_alfabetic;

writeln('dupa sortare');

afisare;

inaltime_medie;

end.

 

2. In fisierul date.in sunt scrise mai multe cuvinte cate unul pe fiecare

linie din fisier. Se cere:

a) sa se determine numarul de cuvinte din fisier

b) sa se afiseze cuvintele care incep cu vocala 

var f:text;

    n:byte;

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

procedure citire_pct_a;

begin

Assign (f,'date.in');reset(f);

n:=0;

while not eof(f) do

begin

     n:=n+1;

     readln(f,a[n]);

end;

writeln('nr cuvinte=',n);

end;

procedure cuvinte_voc;

var i:byte;

begin

for i:=1 to n do

    if upcase(a[i][1])in ['A','E','I','O','U'] then writeln(a[i]);

end;

BEGIN

citire_pct_a;;

cuvinte_voc;

end.

 

3. Din fisierul matrice.txt se preiau de pe prima linie numarul de linii, respectiv de coloane, iar de pe urmatoarele linii elementele de pe fiecarelinie a matricei, despartite prin spatii. Sa se determine produsul numarelor pare de pe coloanele impare si suma numerele impare de pe coloanele pare si sa se afiseze in fisierul rez.dat, fiecare pe cate o linie.

 var f:text;

    a:array[1..100,1..100]of integer;

    n,m:byte;

procedure citire;

var i,j:byte;

begin

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

readln(f,n,m);

for i:=1 to n do

begin

     for j:=1 to m do

         read(f,a[i,j]);

     readln(f);

end;

close(f);

end;

procedure afisare;

var i,j:byte;

begin

for i:=1 to n do

    begin

    for j:=1 to m do

        write(f,a[i,j]:4);

    writeln(f);

    end;

end;

procedure rezolvare;

var i,j:byte;s,p:real;

begin

s:=0;p:=1;

{suma numerelor impare de pe coloane pare}

for j:=1 to m do

if j mod 2=0 then

             for i:=1 to n do

                 if a[i,j] mod 2=1 then s:=s+a[i,j];

{produsul numarelor pare de pe coloane impare}

for j:=1 to m do

    if j mod 2=1 then

             for i:=1 to n do

                 if a[i,j] mod 2=0 then p:=p*a[i,j];

writeln(f,'prod nr pare de pe col impare=',p);

writeln(f,'suma nr impare de pe col pare=',s);

end;

begin

citire;

assign(f,'rez.dat');rewrite(f);

afisare;

rezolvare;

close(f);

end.

 

4. In fisierul text A2.in se afla pe prima linie numarul natural n, n<100. Sa se scrie in fiserul A2.out pe prima linie separate prin spatii numerele prime mai mici decat n, iar pe a doua linie separate prin spati primele n numere prime. 

var n:byte; f:text;

procedure citire;

begin

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

readln(f,n);

if n>=100 then begin write('eroare');halt;end;

close(f);

end;

function prim(n:byte):boolean;

var i:byte;

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 prime_mici_n;

var i,j:byte;

begin

for i:=1 to n do

    if prim(i) then write(f,i:3);

writeln(f);

end;

procedure primele_prime;

var j,nr:byte;

begin

j:=2;nr:=0;

while nr<n do

      begin

      if prim(j) then begin write(f,j:3);nr:=nr+1;end;

      j:=j+1;

      end;

end;

begin

citire;

assign(f,'a2.out');rewrite(f);

prime_mici_n;

primele_prime;

close(f);

end.

counter for wordpress

View My Stats