Macierze - Pascal

0

Hej.
pisze bo mam problem...
Potrzebuje pomocy w napisaniu programu dotyczącego macierzy. Zadanie polega na wypisaniu dwóch macierzy i obliczeniu ich sumy. Mam niby napisany kod ale Turbo Pascal nie chce wyświetlić programu... proszę o pomoc...

program zad1;

uses crt;

var
a,b:integer;

tab1:array[1..3,1..3] of byte;
tab2:array[1..3,1..3] of byte;
dodawanie:array[1..3,1..3] of byte;
{odejmowanie:array[1..o,1..p] of byte;}
var
i,j,k,l,m,n:byte;
{}
procedure losuj;
var i,j:byte;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
tab1[i][j]:=random(10);
end;
end;
{
}
procedure wypisz;
var i,j:byte;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
write(tab1[i][j],' ');
end;
writeln;
end;
end;
{}
procedure losuj2;
var k,l:byte;
begin
for k:=1 to 3 do
begin
for l:=1 to 3 do
tab2[k][l]:=random(10);
end;
end;
{
}
procedure wypisz1;
var k,l:byte;
begin
for k:=1 to 3 do
begin
for l:=1 to 3 do
begin
write(tab2[k][l],' ');
end;
writeln;
end;
end;
{
}
procedure dod;
var m,n:byte;
begin
for m:=1 to 3 do
begin
for n:=1 to 3 do
dodawanie[m][n]:=tab1[i][j]+tab2[k][l];
end;
end;
{
}
{procedure wypisz2;
var m,n:integer;
begin
for m:=1 to 3 do
begin
for n:=1 to 3 do
begin ,' ');
end;
writeln;
end;
end;}
{
****************************************}
BEGIN
clrscr;
randomize;
writeln('Pierwsza macierz: ');
writeln;
losuj;
wypisz;
writeln;
writeln;
writeln('druga macierz: ');
writeln;
losuj2;
wypisz1;
writeln;
writeln;
dod;
{wypisz2;}
readkey;
END.

0

Przepraszam, ale ja nawet tego nie mam siły czytać :/ Może trzeba było wszystko w jednej linii napisać :D

A tak na poważnie - wcięcia, formatowanie, kod powinien być w znacznikach code - w obecnej formie nie da się tego czytać!

Co to znaczy: Nie chce wyświetlić programu?

Dlaczego wcięcia i formatowanie? Zobacz poniżej:

Masz tak:
procedure wypisz;
var i,j:byte;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
begin
write(tab1[i][j],' ');
end;
writeln;
end;

Powinieneś mieć tak:

procedure wypisz;
var
  i,j:byte;
begin
  for i:=1 to 3 do
    begin
    for j:=1 to 3 do
      begin
      write(tab1[i][j],' ');
      end;
    writeln;
    end;
end;

Widzisz jaka różnica? Zarówno w samym czytaniu kodu (co, gdzie, jak) ale nie tylko... W ten sposób łatwiej wyłapać jakikolwiek błąd...

0

W procedurach wypisz i wypisz1 wiedziałeś jak wydrukować macierz na ekranie, a w procedurze wypisz2 dajesz takie coś

begin                ,' ');
end;

I co to ma być? Przecież można się domyśleć co tu należy wpisać przez prostą analogię do poprzednich procedur.

A procedura **dod **to już mistrzostwo świata ;)

procedure dod;
var m,n:byte;
begin
  for m:=1 to 3 do begin
    for n:=1 to 3 do
      dodawanie[m][n]:=tab1[i][j]+tab2[k][l];  // Skąd wziąłeś te indeksy (i, j, k, l)?
    end;
  end;
end;

Jeżeli to poprawisz i usuniesz komentarze to program wyświetli to co powinien

0

dobra już sobie poradziłem...
dzięki za wskazówki...

1 użytkowników online, w tym zalogowanych: 0, gości: 1