ďťż

Ł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
  •