Ĺadny brzuch
Witam,
Problem jest następujący:)
Napisz program, który wczytuje do tablicy elementy macierzy A o wymiarze n na k (n,k<20) oraz oblicza i wyświetla macierz sum elementów w kolumnie.
Oto ile udało mi sie stworzyć:
uses WinCrt; var k,n:integer; t: array[1..20 , 1..20] of real; i,j: integer {licznik kolumn}; sum:real;{sumowanie} begin writeln ('Podaj ilosc kolumn: '); readln(n); write('Podaj ilosc wierszy: '); readln(k); for i:=1 to n do {ustalanie wymiarow} for j:=1 to k do begin write ('Podaj elementy macierzy x[',i,',',j,']: '); readln (t[i,j]); end; for i:=1 to n do {wyswietlanie} begin writeln; for j:=1 to k do write(t[i,j]:2:0); end; writeln; for i:=1 to n do sum:=0; sum:=sum+t[i,1]; writeln('Suma wynosi :',sum:2:2); readln; end.
Oczywiscie ostatnia "opcja" sumowania jest błedna. Oczywscie pytanie dotyczy sumowania? Co źle robie, ew czy napisac sumowanie zupełnie inaczej?Jeżeli tak, to byłbym wdzieczny za wskazówki:)
cytat:Crisu napisał:
{...}
for i:=1 to n do
sum:=0;
sum:=sum+t[i,1];
{...}
Oczywiscie ostatnia "opcja" sumowania jest błedna. Oczywscie pytanie dotyczy sumowania? Co źle robie, ew czy napisac sumowanie zupełnie inaczej?Jeżeli tak, to byłbym wdzieczny za wskazówki:)
Zrobiłeś to "prawie" dobrze :)
Błąd popełniłeś w pętli. W tej postaci jak jest teraz to co robisz to n-krotne wpisanie liczby 0 do zmiennej sum a następnie (już poza pętlą) dodanie do tej zmiennej elementu t[n,1] macierzy.
Problem zniknie gdy linijkę sum:=0; przeniesiesz o jedną linię wyżej (nad for).
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
[/code]
uses WinCrt;
var
k,n:integer; {n-wierszy k-kolumna}
t: array[1..20 , 1..20] of real;
i,j: integer {licznik kolumn} ;
sum:real;{sumowanie}
begin
writeln ('Podaj ilosc wierszy: ');
readln(n);
write('Podaj ilosc kolumn: ');
readln(k);
for i:=1 to n do {ustalanie wymiarow}
for j:=1 to k do
begin
write ('Podaj elementy macierzy x[',i,',',j,']: ');
readln (t[i,j]);
end;
for i:=1 to n do {wyswietlanie}
begin
writeln;
for j:=1 to k do
write(t[i,j]:2:0);
end;
writeln;
for i:=1 to k do
sum:=0;
sum:=sum+t[i,1];
writeln('Suma wynosi :',sum:2:2);
readln;
end.[/code]
Kurcze , no cos jest nie tak:( Źle dodaje i wywala się w momencie gdy suma jest wieksza niz 10. (ew moj kompilator znowu nawala:(
Zastrzeżenie jeszcze jest takie, że sumowane musza byc wszystkie kolumny a nie tylko 1. Ktoś wie jak to zrobić?
Zamiast tego:
for i:=1 to k do
sum:=0;
sum:=sum+t[i,1];
writeln('Suma wynosi :',sum:2:2);
Wpisz to:
for i:=1 to n do
begin
sum:=0;
for j:=1 to k do
sum:=sum+t[i,j];
writeln('Wiersz nr. ',i,': ',sum:0:3);
end;
Pozdrawiam i zapraszam na *** www.windowsik.prv.pl ***
dzieki i mam jeszcze takie pytanko...
gdybym chciał wprowadzić sumę łaczną wszystich wierszy, to mam zadeklarować nowa "sume", czy mozna to wycinagnac z obecnego sumowania.
cytat:Crisu napisał:
dzieki i mam jeszcze takie pytanko...
gdybym chciał wprowadzić sumę łaczną wszystich wierszy, to mam zadeklarować nowa "sume", czy mozna to wycinagnac z obecnego sumowania.
Z kodu takiego jak podał Ci Favex nie wyciągniesz tej sumy - ponieważ po zsumowaniu każdego wiersza zmienna sum jest zerowana. Przydałaby Ci się dodatkowa zmienna...
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
Kurde no nie wiem, jak napisac aby sumował wszystkie kolumny:|
Jakas podpowiedz;) ?
tfu, wiersze oczywiscie :)
cytat:Crisu napisał:
Kurde no nie wiem, jak napisac aby sumował wszystkie kolumny:|
Jakas podpowiedz;) ?
Wystarczy np. zadeklarować zmienną sumr typu Real a do fragmentu, który podał Ci Favex:
for i:=1 to n do begin sum:=0; for j:=1 to k do sum:=sum+t[i,j]; writeln('Wiersz nr. ',i,': ',sum:0:3); end;
dodać dwie linijki (zaznaczone na czerwono):
for i:=1 to n do begin sum:=0; for j:=1 to k do sum:=sum+t[i,j]; writeln('Wiersz nr. ',i,': ',sum:0:3); [b]sumr:=sumr+sum;[/b] end; [b]writeln('Suma wszystkich wierszy = ',sumr:0:3);[/b]
i to wszystko...
Crisu - musisz starać się więcej kombinować ;)
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
var suma_wier: real;
(...)
suma_wier:=0;
for i:=1 to n do
begin
sum:=0;
for j:=1 to k do
sum:=sum+t[i,j];
suma_wier:=suma_wier+sum;
writeln('Wiersz nr. ',i,': ',sum:0:3);
end;
writeln('Suma sum wszystkich wierszy: ',sum_wier:0:3);
Pozdrawiam i zapraszam na *** www.windowsik.prv.pl ***
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Problem jest następujący:)
Napisz program, który wczytuje do tablicy elementy macierzy A o wymiarze n na k (n,k<20) oraz oblicza i wyświetla macierz sum elementów w kolumnie.
Oto ile udało mi sie stworzyć:
uses WinCrt; var k,n:integer; t: array[1..20 , 1..20] of real; i,j: integer {licznik kolumn}; sum:real;{sumowanie} begin writeln ('Podaj ilosc kolumn: '); readln(n); write('Podaj ilosc wierszy: '); readln(k); for i:=1 to n do {ustalanie wymiarow} for j:=1 to k do begin write ('Podaj elementy macierzy x[',i,',',j,']: '); readln (t[i,j]); end; for i:=1 to n do {wyswietlanie} begin writeln; for j:=1 to k do write(t[i,j]:2:0); end; writeln; for i:=1 to n do sum:=0; sum:=sum+t[i,1]; writeln('Suma wynosi :',sum:2:2); readln; end.
Oczywiscie ostatnia "opcja" sumowania jest błedna. Oczywscie pytanie dotyczy sumowania? Co źle robie, ew czy napisac sumowanie zupełnie inaczej?Jeżeli tak, to byłbym wdzieczny za wskazówki:)
cytat:Crisu napisał:
{...}
for i:=1 to n do
sum:=0;
sum:=sum+t[i,1];
{...}
Oczywiscie ostatnia "opcja" sumowania jest błedna. Oczywscie pytanie dotyczy sumowania? Co źle robie, ew czy napisac sumowanie zupełnie inaczej?Jeżeli tak, to byłbym wdzieczny za wskazówki:)
Zrobiłeś to "prawie" dobrze :)
Błąd popełniłeś w pętli. W tej postaci jak jest teraz to co robisz to n-krotne wpisanie liczby 0 do zmiennej sum a następnie (już poza pętlą) dodanie do tej zmiennej elementu t[n,1] macierzy.
Problem zniknie gdy linijkę sum:=0; przeniesiesz o jedną linię wyżej (nad for).
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
[/code]
uses WinCrt;
var
k,n:integer; {n-wierszy k-kolumna}
t: array[1..20 , 1..20] of real;
i,j: integer {licznik kolumn} ;
sum:real;{sumowanie}
begin
writeln ('Podaj ilosc wierszy: ');
readln(n);
write('Podaj ilosc kolumn: ');
readln(k);
for i:=1 to n do {ustalanie wymiarow}
for j:=1 to k do
begin
write ('Podaj elementy macierzy x[',i,',',j,']: ');
readln (t[i,j]);
end;
for i:=1 to n do {wyswietlanie}
begin
writeln;
for j:=1 to k do
write(t[i,j]:2:0);
end;
writeln;
for i:=1 to k do
sum:=0;
sum:=sum+t[i,1];
writeln('Suma wynosi :',sum:2:2);
readln;
end.[/code]
Kurcze , no cos jest nie tak:( Źle dodaje i wywala się w momencie gdy suma jest wieksza niz 10. (ew moj kompilator znowu nawala:(
Zastrzeżenie jeszcze jest takie, że sumowane musza byc wszystkie kolumny a nie tylko 1. Ktoś wie jak to zrobić?
Zamiast tego:
for i:=1 to k do
sum:=0;
sum:=sum+t[i,1];
writeln('Suma wynosi :',sum:2:2);
Wpisz to:
for i:=1 to n do
begin
sum:=0;
for j:=1 to k do
sum:=sum+t[i,j];
writeln('Wiersz nr. ',i,': ',sum:0:3);
end;
Pozdrawiam i zapraszam na *** www.windowsik.prv.pl ***
dzieki i mam jeszcze takie pytanko...
gdybym chciał wprowadzić sumę łaczną wszystich wierszy, to mam zadeklarować nowa "sume", czy mozna to wycinagnac z obecnego sumowania.
cytat:Crisu napisał:
dzieki i mam jeszcze takie pytanko...
gdybym chciał wprowadzić sumę łaczną wszystich wierszy, to mam zadeklarować nowa "sume", czy mozna to wycinagnac z obecnego sumowania.
Z kodu takiego jak podał Ci Favex nie wyciągniesz tej sumy - ponieważ po zsumowaniu każdego wiersza zmienna sum jest zerowana. Przydałaby Ci się dodatkowa zmienna...
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
Kurde no nie wiem, jak napisac aby sumował wszystkie kolumny:|
Jakas podpowiedz;) ?
tfu, wiersze oczywiscie :)
cytat:Crisu napisał:
Kurde no nie wiem, jak napisac aby sumował wszystkie kolumny:|
Jakas podpowiedz;) ?
Wystarczy np. zadeklarować zmienną sumr typu Real a do fragmentu, który podał Ci Favex:
for i:=1 to n do begin sum:=0; for j:=1 to k do sum:=sum+t[i,j]; writeln('Wiersz nr. ',i,': ',sum:0:3); end;
dodać dwie linijki (zaznaczone na czerwono):
for i:=1 to n do begin sum:=0; for j:=1 to k do sum:=sum+t[i,j]; writeln('Wiersz nr. ',i,': ',sum:0:3); [b]sumr:=sumr+sum;[/b] end; [b]writeln('Suma wszystkich wierszy = ',sumr:0:3);[/b]
i to wszystko...
Crisu - musisz starać się więcej kombinować ;)
ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486
var suma_wier: real;
(...)
suma_wier:=0;
for i:=1 to n do
begin
sum:=0;
for j:=1 to k do
sum:=sum+t[i,j];
suma_wier:=suma_wier+sum;
writeln('Wiersz nr. ',i,': ',sum:0:3);
end;
writeln('Suma sum wszystkich wierszy: ',sum_wier:0:3);
Pozdrawiam i zapraszam na *** www.windowsik.prv.pl ***