Задача - Вычислить сумму элементов главной или побочной диагонали матрицы - программирование на разных языках

Задача — Вычислить сумму элементов главной или побочной диагонали матрицы — программирование на разных языках

Задачи по программированию с решением для школьников
Want create site? Find Free WordPress Themes and plugins.

Задача — Вычислить сумму элементов главной или побочной диагонали матрицы
— программирование на Pascal, Си, Кумир, Basic-256, Python

Дана квадратная матрица. Вычислить сумму элементов главной или побочной диагонали в зависимости от выбора пользователя. Сумма элементов любой диагонали должна вычисляться в одной и той же функции.

В функцию следует передавать не только массив, но и информацию о том, что требуется вычислить, выраженную через тот или иной символ или число.

Если была выбрана сумма главной диагонали, то при определении ее элементов второй индекс матрицы будет равен первому и начинаться с первого элемента. В случае побочной диагонали второй индекс будет начинаться с последнего элемента и заканчиваться первым. Поэтому в теле функции перед проходом по матрице второму индексу присваивается либо 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.

Пример(ы) выполнения программы на языке Pascal:

    0   2   0   4   8   0   4   1   5   1    1   7   7   0   1   7   8   4   7   7    1   0   7   4   6   5   0   6   4   7    1   5   3   3   0   4   6   7   8   0    1   7   3   8   1   6   9   4   4   7    8   5   7   7   1   7   8   8   8   4    2   0   1   3   1   5   2   0   0   8    4   8   3   7   5   6   5   1   3   9    9   0   9   2   1   0   3   6   1   3    8   3   7   5   8   8   9   5   1   1 Главная (1) или побочная (2): 2 41

Язык Си

#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(«%dn», 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

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
кон

Did you find apk for android? You can find new Free Android Games and apps.

Добавить комментарий