Вычислить сумму элементов главной или побочной диагонали матрицы
Авторgospodaretsva.comПросмотров11.3к.Обновлено
Дана квадратная матрица. Вычислить сумму элементов главной или побочной диагонали в зависимости от выбора пользователя. Сумма элементов любой диагонали должна вычисляться в одной и той же функции.
В функцию следует передавать не только массив, но и информацию о том, что требуется вычислить, выраженную через тот или иной символ или число.
Если была выбрана сумма главной диагонали, то при определении ее элементов второй индекс матрицы будет равен первому и начинаться с первого элемента. В случае побочной диагонали второй индекс будет начинаться с последнего элемента и заканчиваться первым. Поэтому в теле функции перед проходом по матрице второму индексу присваивается либо 1 (или 0), либо размерность квадратной матрицы (N или N-1). При проходе второй индекс либо увеличивается на каждой итерации, либо уменьшается.
Pascal
const N = 10;
type
type_arr = array[1..N, 1..N] of byte;
var
arr: type_arr;
i, j: byte;
sum: byte;
ch: char;
function diagonal (var arr1: type_arr; c: char): byte;
var
sum1: byte;
i, j: byte;
begin
sum1 := 0;
if c = '1' then j := 1
else j:= N;
for i:=1 to N do begin
sum1 := sum1 + arr1[i][j];
if c = '1' then j := j + 1
else j := j-1;
end;
diagonal := sum1;
end;
begin
randomize;
for i:=1 to N do begin
for j:=1 to N do begin
arr[i,j] := random(10);
write(arr[i,j]:4);
end;
writeln;
end;
write('Главная (1) или побочная (2): ');
readln(ch);
if (ch = '1') or (ch = '2') then begin
sum := diagonal(arr, ch);
writeln(sum);
end;
end.
#include < stdio.h>
#define N 10
int diagonal(char c);
int a[N][N];
main() {
int i, j, sum;
char ch;
srand(time(NULL));
for (i=0; i< N; i++) {
for (j=0; j< N; j++) {
a[i][j] = rand() % 10;
printf("%3d", a[i][j]);
}
printf("\n");
}
printf("Главная (1) или побочная (2): ");
scanf("%c", &ch);
sum = diagonal(ch);
printf("%d\n", sum);
}
int diagonal(char c) {
int s, i, j;
s = 0;
if (c == '1')
for (i=0; i< N; i++)
s += a[i][i];
else
for (i=0, j=N-1; i< N; i++,j--)
s += a[i][j];
return s;
}
Python
сумма элементов главной диагонали матрицы python
def diagonal(l,c):
s = 0
i = 0
while i < N:
if c == '1':
s += l[i][i]
else:
s += l[i][N-i-1]
i += 1
return s
from random import random
N = 10
a = []
for i in range(N):
b = []
for j in range(N):
n = int(random()*10)
b.append(n)
print("%3d" % n, end='')
a.append(b)
print()
ch = input("Главная (1) или побочная (2): ")
if ch == '1' or ch == '2':
summa = diagonal(a,ch)
print(summa)
КуМир
цел N = 7
цел таб a[1:N,1:N]
алг
нач
цел i, j, sum
сим ch
нц для i от 1 до N
нц для j от 1 до N
a[i,j] := int(rand(0,10))
вывод a[i,j], " "
кц
вывод нс
кц
вывод "Главная (г) или побочная (п): "
ввод ch
если ch = "г" или ch = "п" то
sum := diag(ch)
вывод sum
все
кон
алг цел diag(сим c)
нач
цел s, i, j
s := 0
нц для i от 1 до N
если c = "г" то
s := s + a[i,i]
иначе
s := s + a[i,N-i+1]
все
кц
знач := s
кон
Подписаться
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Pascal
const N = 10; type type_arr = array[1..N, 1..N] of byte;
var arr: type_arr; i, j: byte; sum: byte; ch: char;
function diagonal (var arr1: type_arr; c: char): byte; var sum1: byte; i, j: byte; begin sum1 := 0; if c = '1' then j := 1 else j:= N; for i:=1 to N do begin sum1 := sum1 + arr1[i][j]; if c = '1' then j := j + 1 else j := j-1; end; diagonal := sum1; end;
begin randomize; for i:=1 to N do begin for j:=1 to N do begin arr[i,j] := random(10); write(arr[i,j]:4); end; writeln; end; write('Главная (1) или побочная (2): '); readln(ch); if (ch = '1') or (ch = '2') then begin sum := diagonal(arr, ch); writeln(sum); end; end.
#include < stdio.h> #define N 10 int diagonal(char c); int a[N][N];
main() { int i, j, sum; char ch; srand(time(NULL)); for (i=0; i< N; i++) { for (j=0; j< N; j++) { a[i][j] = rand() % 10; printf("%3d", a[i][j]); } printf("\n"); } printf("Главная (1) или побочная (2): "); scanf("%c", &ch); sum = diagonal(ch); printf("%d\n", sum); }
int diagonal(char c) { int s, i, j; s = 0; if (c == '1') for (i=0; i< N; i++) s += a[i][i]; else for (i=0, j=N-1; i< N; i++,j--) s += a[i][j]; return s; }
Python
сумма элементов главной диагонали матрицы python
def diagonal(l,c): s = 0 i = 0 while i < N: if c == '1': s += l[i][i] else: s += l[i][N-i-1] i += 1 return s
from random import random N = 10 a = [] for i in range(N): b = [] for j in range(N): n = int(random()*10) b.append(n) print("%3d" % n, end='') a.append(b) print()
ch = input("Главная (1) или побочная (2): ") if ch == '1' or ch == '2': summa = diagonal(a,ch) print(summa)
КуМир
цел N = 7 цел таб a[1:N,1:N] алг нач цел i, j, sum сим ch нц для i от 1 до N нц для j от 1 до N a[i,j] := int(rand(0,10)) вывод a[i,j], " " кц вывод нс кц вывод "Главная (г) или побочная (п): " ввод ch если ch = "г" или ch = "п" то sum := diag(ch) вывод sum все кон
алг цел diag(сим c) нач цел s, i, j s := 0 нц для i от 1 до N если c = "г" то s := s + a[i,i] иначе s := s + a[i,N-i+1] все кц знач := s кон