Informatică, întrebare adresată de AsamiOikava, 8 ani în urmă

AJUTATI-MA VA ROG URGENT TREBUIE
la pascal
fiecare linie a unui fisier test contine urmatoarele date,separate prin spatii:
-numarul de ordine(integer)
-numele(un string ce nu contine spatii)
-prenumele(un string ce nu contine spatiu)
-nota la disciplina 1(real)
-nota la disciplina 2(real)
-nota la disciplina 3(real).
Elaborati un program care:
a)elaboreaza o copie de rezerva a fisierului in studiu
b)afiseaza continutul fisierului pe ecran
c) reeaza un fisier text liniile caruia contin urmatoarele date separate prin spatii
-numarul de ordine(integer)
-numele(string)
-prenumale(string)
-nota medie(real)


boiustef: un program sau 3 ???

Răspunsuri la întrebare

Răspuns de boiustef
4

Răspuns:

program FisierePascal_a;

var f,g:text;

   linie:string;

begin

 assign(f,'date.txt');

 reset(f);

 assign(g,'copie.txt');

 rewrite(g);

 while not eof(f) do

   begin

     readln(f,linie);

     writeln(g,linie);

   end;

 close(f); close(g);

end.

----------------------------------------------

program FisierePascal_b;

var f:text;

   linie:string;

begin

 assign(f,'date.txt');

 reset(f);

 while not eof(f) do

   begin

     readln(f,linie);

     writeln(linie);

   end;

 close(f);

end.

Explicație:

program FisierePascal_c;

var f,g:text;

   linie,nr, nume, pren,n1,n2:string;

   nota1,nota2,nota3,media:real;

   poz,cod:integer;

begin

 assign(f,'date.txt');

 reset(f);

 assign(g,'media.txt');

 rewrite(g);

 while not eof(f) do

   begin

     readln(f,linie);

     poz:=1; while linie[poz]<>' ' do inc(poz);

     nr:=copy(linie,1,poz);

     write(g,nr);

     delete(linie,1,poz);

     poz:=1; while linie[poz]<>' ' do inc(poz);

     nume:=copy(linie,1,poz);

     write(g,nume);

     delete(linie,1,poz);

     poz:=1; while linie[poz]<>' ' do inc(poz);

     pren:=copy(linie,1,poz);

     write(g,pren);

     delete(linie,1,poz);

     poz:=1; while linie[poz]<>' ' do inc(poz);

     n1:=copy(linie,1,poz-1);

     val(n1,nota1,cod);

     delete(linie,1,poz);

     poz:=1; while linie[poz]<>' ' do inc(poz);

     n2:=copy(linie,1,poz-1);

     val(n2,nota2,cod);

     delete(linie,1,poz);

     val(linie,nota3,cod);

     media:=(nota1+nota2+nota3)/3;

     writeln(g,' ',media:0:2);

  end;

  close(f); close(g);

end.


boiustef: la o adică media, dacă e pentru catalog şi se calculează cu două zecimale fără rotunjire, atunci înainte de instrucţiunea
writeln(g,' ',media:0:2);
trebuie să adaugi instrucţiunea
media:=int(media*100)/100;
AsamiOikava: multumesc
Alte întrebări interesante