Informatică, întrebare adresată de dancovascovas, 9 ani în urmă

ajutatima va rog ex 7 vA rog mult!!!!

Anexe:

Răspunsuri la întrebare

Răspuns de blindseeker90
0
M-am ferit sa raspund pentru ca nu cunosc nici acum cum functioneaza fisierele acelea din Pascal si se intelege din enunt ca trebuie citit si scris si in fisiere. Am facut perechi de proceduri pentru citire si afisare pe ecran, dar si citire si scriere in fisiere. Mi-au mers 3 din 4: nu reusesc sa-l fac sa scrie in vreun fisier.

Ma rog, le-am lasat comentate la inceputul programului principal ca sa vezi cum s-ar putea utiliza. Am folosit citire din fisier si afisare pe ecran pentru testare. In rest, ar trebui sa fie bine

Program A7;
type matrice=array[1..20,1..20] of integer;
var 
  fisierIntrare,fisierIesire:string;
  textIn,textOut:Text;
  mat:matrice;
  N,M:integer;
//procedura de citire a datelor de pe ecran  
procedure citire_ecran();
var i,j:integer;
begin
   writeln('Introduceti dimensiunile matricii:');
   //citire dimensiuni matrice
   read(N);
   read(M);
   //citire element cu element
   for i:=1 to N do
     for j:=1 to M do
       read(mat[i][j]);
end;
//afisare pe ecran
procedure afisare_ecran();
var i,j:integer;
begin
   writeln('Matricea este:');
   //afisare specifica matrice
   for i:=1 to N do
     begin
     for j:=1 to M do
       begin
       write(mat[i][j]);
       write(' ');
       end;
      writeln;
      end;
end;

procedure citire_fisier(nume_fisier:string);
var i,j:integer;
begin
   //asignam textului fisierul respectiv
   AssignFile(textIn,nume_fisier);
   //deschidem fisierul pentru citire
   reset(textIn);
   
   //citire dimensiuni matrice
   read(textIn,N);
   read(textIn,M);
   //citire element cu element
   for i:=1 to N do
     for j:=1 to M do
       read(textIn,mat[i][j]);
end;

//aparent defect
procedure scrie_fisier(nume_fisier:string);
var i,j:integer;
begin
   //asignam fisier de scriere
   AssignFile(textOut,nume_fisier);
   //deschidem pentru scriere
   rewrite(textOut);
   //afisare specifica matrice
   for i:=1 to N do
     begin
     for j:=1 to M do
       begin
       write(textOut,mat[i][j]);
       write(textOut,' ');
       end;
      writeln(textOut,' ');
      
      end;   

end;
//aceasta procedura va ordona descreacator toate elementele date de pe o coloana
//n reprezinta numarul de linii al matricii, col este coloana pe care vrem sa facem ordonarea
//v este matricea care vrem sa fie ordonata pe coloana aceea
procedure ordonare_selectie_desc(n,col:integer;var v:matrice);
var x,y,i,j,tmp:integer;
begin
   for i:=1 to n-1 do
   begin
     x:=i;
     y:=i;
     for j:=i+1 to n do
        begin
        if v[x][col]<v[j][col] then
        x:=j;
        end;
      if x<>y then
       begin
       tmp:=v[y][col];
       v[y][col]:=v[x][col];
       v[x][col]:=tmp;
       end;
   end;
end;
//suma elemente impare pe linie
//n este numarul de coloane al matricii
//linie este numarul liniei pe care se face calculul
//v este matricea respectiva
function suma_impare(n,linie:integer;var v:matrice):integer;
begin
  //cazul de baza, cand n a ajuns la 0
  if n=0 then
  suma_impare:=0
  else
  begin
    //daca ultimul element de pe linie este impar, aduna la suma elementul
    //daca nu, va fi egal cu rezultatul ei la o valoare mai mica
    if v[linie][n] mod 2=1 then
       suma_impare:=suma_impare(n-1,linie,v)+v[linie][n]
    else
       suma_impare:=suma_impare(n-1,linie,v);
  end;
  
end;

begin
    //citire_ecran();
    //afisare_ecran();
    //writeln('Scrieti numele fisierului de iesire:');
    //readln(fisierIesire);
    //scrie_fisier(fisierIesire);
    
    //in numele fisierului de intrare sa incluzi si extensia gen matrice.txt
    writeln('Scrieti numele fisierului de intrare:');
    readln(fisierIntrare);
    citire_fisier(fisierIntrare);
    //aici primul argument este nr de linii, al doilea ce coloana este de ordonat
    ordonare_selectie_desc(N,M,mat);
    afisare_ecran();
    //primul argument cate coloane are matricea, al doilea ce linie trebuie sa aiba
    //suma de termeni
    writeln('Suma elemente impare prima linie:',suma_impare(M,1,mat));

    
end.
Alte întrebări interesante