(si può espandere a piacimento basta modificare il source)
- Code: Select all
program matrici;
uses crt;
var matriceA: array [1..50,1..50] of integer;
matriceB: array [1..50,1..50] of integer;
matriceC: array [1..50,1..50] of integer;
i,k,r_max,r1_max,c_max,c1_max,scelta: integer;
procedure stampa_menu;
begin
writeln(' _____________________________');
writeln('| |');
writeln('| 1 Somma di due matrici |');
writeln('| 2 Differenza di due matrici |');
writeln('|_____________________________|');
writeln;
writeln('Effettua la tua scelta');
writeln;
end;
procedure dichiara_matrici;
begin
repeat
writeln('inserisci il numero di righe della prima matrice');
if r_max > 50 then
writeln('il numero di righe deve essere inferiore a 50');
readln(r_max);
until r_max < 51;
repeat
writeln('inserisci il numero di colonne della prima matrice');
if c_max > 50 then
writeln(' il numero di colonne deve essere inferiore a 50');
readln(c_max);
until c_max < 51;
repeat
writeln('inserisci il numero di righe della seconda matrice');
if r1_max > 50 then
writeln('il numero di righe deve essere inferiore a 50');
readln(r1_max);
until r1_max < 51;
repeat
writeln('inserisci il numero di colonne della seconda matrice');
if c1_max > 50 then
writeln(' il numero di colonne deve essere inferiore a 50');
readln(c1_max);
until c1_max < 51;
end;
procedure inserimento_dati_matrici;
begin
for i:=1 to r_max do
for k:=1 to c_max do
begin
writeln('inserisci A (',i,';',k,')');
readln(matriceA[i,k]);
end;
for i:=1 to r1_max do
for k:=1 to c1_max do
begin
writeln('inserisci B (',i,';',k,')');
readln(matriceB[i,k]);
end;
writeln;
end;
procedure stampo_matrici;
begin
for i:=1 to r_max do
for k:=1 to c_max do
begin
writeln('A (',i,';',k,') ','= ',matriceA[i,k]);
end;
writeln;
for i:=1 to r1_max do
for k:=1 to c1_max do
begin
writeln('B (',i,';',k,') ','= ',matriceB[i,k]);
end;
end;
procedure somma_matrici;
begin
writeln;
for i:=1 to r_max do
for k:=1 to c_max do
begin
matriceC[i,k]:=matriceA[i,k]+matriceB[i,k];
writeln('C (',i,';',k,') ','= ',matriceC[i,k]);
end;
end;
procedure differenza_matrici;
begin
for i:=1 to r_max do
for k:=1 to c_max do
begin
matriceC[i,k]:=matriceA[i,k]-matriceB[i,k];
writeln('C (',i,';',k,') ','= ',matriceC[i,k]);
end;
end;
begin
clrscr;
stampa_menu;
readln(scelta);
case scelta of
1: begin
repeat
dichiara_matrici;
if (r_max <> r1_max) or (c_max <> c1_max) or ((r_max <> r1_max) and (c_max <> c1_max)) then
writeln('il numero di righe e di colonne devono essere uguali')
until (r_max = r1_max) and (c_max = c1_max);
inserimento_dati_matrici;
stampo_matrici;
somma_matrici;
end;
2: begin
repeat
dichiara_matrici;
if (r_max <> r1_max) or (c_max <> c1_max) or ((r_max <> r1_max) and (c_max <> c1_max)) then
writeln('il numero di righe e di colonne devono essere uguali')
until (r_max = r1_max) and (c_max = c1_max);
inserimento_dati_matrici;
stampo_matrici;
differenza_matrici;
end;
else
writeln;
writeln('Scelta invalida, premi un tasto per uscire ... ');
end;
repeat until keypressed;
end.



