ajutatima va rog ex 7 vA rog mult!!!!
Anexe:
Răspunsuri la întrebare
Răspuns de
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.
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
Informatică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă