Skocz do zawartości

Przekątne macierzy. Błąd


Crosik

Polecane posty

Witam,

Mam takie zadanie:

Napisz program, w którym zdefiniowaną tablicę dwuwymiarową o rozmiarach NxN (maksymalnie 10x10) wypełniamy elementami losowymi z zakresu <-10,10>. Program ma wyświetlić tablicę na ekranie (każdy element na 3 polach), a następnie obliczyć sumę przekątnych tej tablicy.

 

Zostało przeze mnie stworzone coś takiego, ale z błędem...

 

program zadanie3;

 

uses

Math;

 

var

i, j, k, x: byte;

tab:array[1..10,1..10] of integer;

suma, suma1, suma2: integer;

 

begin

 

repeat

writeln('Podaj liczbe kolumn i wierszy: ');

readln(k);

until (k<=10);

 

randomize;

for i:= 1 to k do

begin

for j:= 1 to k do

begin

tab[i,j]:= random(21) - 10;

write(tab[i,j]:3);

end;

writeln;

end;

 

suma1:= 0;

suma2:= 0;

 

for i:= 1 to k do

begin

suma1:= suma1 + tab[i,i];

end;

 

x:= k;

 

for i:= 1 to k do

begin

if k mod 2 = 1 then

begin

if (i<>ceil(k/2)) and (x<>ceil(k/2)) then

suma2:= suma2 + tab[i,x];

x:= x - 1;

end

 

else if k mod 2 = 0 then

suma2:= suma2 + tab[i,x];

x:= x - 1;

end;

 

suma:= suma1 + suma2;

 

writeln('Suma elementow przekatnych: ', suma1);

writeln('Suma elementow przekatnych: ', suma2);

writeln('Suma elementow przekatnych: ', suma);

readln;

end.

 

Mianowicie przy podaniu nieparzystego k, sumę drugiej przekątnej liczy tylko z elementów znajdujących się nad elementem środkowym. Co zmienić, aby zostały dodawane również elementy znajdujące się na przekątnej, ale poniżej elementu środkowego?

 

Z góry bardzo dziękuję za pomoc.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...