Mnożenie macierzy przez skalar - pascal

Awatar użytkownika
Natasha
Użytkownik
Użytkownik
Posty: 986
Rejestracja: 9 lis 2008, o 15:08
Płeć: Kobieta
Podziękował: 97 razy
Pomógł: 167 razy

Mnożenie macierzy przez skalar - pascal

Post autor: Natasha »

Mam napisać program jak w temacie. Jak na razie mam tyle i nie mam pomysłu co tu jest źle.

Kod: Zaznacz cały

program mnozenie_przez_skalar;
var
a,w,k,i,j,m,n:integer;
x:array[1..10,1..10] of real;

begin
writeln('podaj ilosc wierszy macierzy A: ');
readln(w);
writeln('podaj ilosc kolumn macierzy A: ');
readln(k);

begin
for i:=1 to w do
begin
for j:=1 to k do begin
writeln('A[',i,',',j,']: ');
readln(A[i][j]);
end;
end;
end;

begin
writeln('podaj liczbe przez ktora pomnozyc macierz: ');
readln(a);
begin
writeln;
for i:=1 to w do begin
for j:=1 to k do begin
iloczyn;=0;
for i:=1 to w do
for j:=1 to k do
begin
iloczyn:=iloczyn+a*A[i][j];
x[m,n]:=iloczyn;
end;
end;
end;

begin
fori:=1 to w do
begin
for j:=1 to k do begin
writeln('macierz wynikowa:  ');
writeln(x[m,n]:0:0, '  ');
readln;
end;
end;
end;
end.
proszę o poprawienie.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Mnożenie macierzy przez skalar - pascal

Post autor: kadiii »

Ty to piszesz z palca, nie posiadasz kompilatora? Już na pierwszy rzut oka widac, że chociażby używasz zmiennych, których nie zadeklarowałaś. Poza tym mnożenie macierzy przez stałą to jedynie przemnożenie każdej komórki przez tą wartość - stała * A[i,j] dla każdej pary (i,j). Ale na poczatku to odpal kompilator bo inaczej to ani rusz.
Awatar użytkownika
Natasha
Użytkownik
Użytkownik
Posty: 986
Rejestracja: 9 lis 2008, o 15:08
Płeć: Kobieta
Podziękował: 97 razy
Pomógł: 167 razy

Mnożenie macierzy przez skalar - pascal

Post autor: Natasha »

Odpalałam kompilator już milion razy.
Poprawiłam trochę, ale nadal nie mnoży kazdego elementu, ale jakiś wynik się pojawia. Proszę o poprawienie, bo już naprawde nie mam pomyslu, jak zrobić, zeby mi się pojawila cala wynikowa macierz na ekranie.

Kod: Zaznacz cały

program mnozenie_przez_skalar;
var
a,w,k,i,j,m,n:integer;
x:array[1..10,1..10] of real;
B:array[1..10,1..10] of real;

begin
writeln('podaj ilosc wierszy macierzy B: ');
readln(w);
writeln('podaj ilosc kolumn macierzy B: ');
readln(k);

begin
for i:=1 to w do
for j:=1 to k do begin
writeln('B[',i,',',j,']: ');
readln(B[i,j]);
end;
end;

begin
writeln('podaj liczbe przez ktora pomnozyc macierz: ');
readln(a);
for i:=1 to w do
for j:=1 to k do
x[m,n]:=a*B[i,j];
writeln('macierz wynikowa:  ',x[m,n]:0:0);
readln;
end;
end.
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Mnożenie macierzy przez skalar - pascal

Post autor: kadiii »

Odpalałam kompilator już milion razy.
Warto też czasem poczytać co nam ten kompilator wypisuje, często stara się zwyczajnie podpowiedzieć aby "nasze życie było prostsze".
Pan kompilator pisze:Variable "m" does not seem to be initialized
Pan kompilator pisze:Variable "n" does not seem to be initialized
I wszystko staje sie jasne.

Kod: Zaznacz cały

x[m,n]:=a*B[i,j]; !!!

Proszę:

Kod: Zaznacz cały

program mnozenie_przez_skalar;
var
a,w,k,i,j:integer;
x:array[1..10,1..10] of real;
B:array[1..10,1..10] of real;

begin
writeln('podaj ilosc wierszy macierzy B: ');
readln(w);
writeln('podaj ilosc kolumn macierzy B: ');
readln(k);

begin
for i:=1 to w do
for j:=1 to k do begin
writeln('B[',i,',',j,']: ');
readln(B[i,j]);
end;
end;

begin
writeln('podaj liczbe przez ktora pomnozyc macierz: ');
readln(a);
writeln('nasza pierwotna macierz');
for i:=1 to w do 
begin
  for j:=1 to k do
   write(B[i,j]:0:0,' ');
 writeln;
end;
writeln;
for i:=1 to w do
  for j:=1 to k do
   x[i,j]:=a*B[i,j];
writeln('macierz wynikowa');
for i:=1 to w do 
begin
  for j:=1 to k do
   write(x[i,j]:0:0,' ');
 writeln;
end;
readln;
end;
end.
ODPOWIEDZ