Skocz do zawartości


Przekątne macierzy. Błąd


Brak odpowiedzi do tego tematu

#1 Crosik

    Nowy na forum

  • Użytkownicy
  • 1 Postów:

Napisano pon, 12 gru 2016 - 22:53

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.