Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 4

Shell: Определить максимальное значение среди сумм диагоналей, параллельных главной диагонали квадратной матрицы

01.11.2018, 02:26. Показов 2186. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите поправить скрипт, нужно определить максимальное значение среди сумм диагоналей, параллельных главной диагонали квадратной матрицы.
Код половина на shell, а вторая половина на Turbo Pascal.
Нужно поправить, чтобы все было на shell.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
echo "Enter size of matrix:"
read n
declare -A matrix
for ((i = 0; i < n; i++)); do
for ((j = 0; j < n; j++)); do
matrix[$i,$j]=`shuf -i 0-200 -n 1`
done
done
echo "--------------------"
echo "The matrix $n x $n:"
for ((i = 0; i < n; i++)); do
echo -n "["
for ((j = 0; j < n; j++)); do
printf " %3d" ${matrix[$i,$j]}
done
echo "]"
done
echo "--------------------"
for i:=1 to n do
   for j:=2 to n do
      begin
        sum1:=sum1+a[i,j];
            i:=i+1;
                  end;
m:=n-1;
  for i:=1 to n do
   for j:=1 to m do
      begin
        sum2:=sum2+a[i,j];
            i:=i+1;
                  end;
  writeln('Maksimum sredi sum elementov diagonaley');
  if sum1>sum2 then writeln(sum1)
    else
      if sum2>sum1 then writeln(sum2) ;
  readln;
end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.11.2018, 02:26
Ответы с готовыми решениями:

Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы
Дана целочисленная квадратная матрица, определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы
помогите пж сделать прогу на с # Дана целочисленная прямоугольная матрица. Определить: максимум среди сумм элементов диагоналей,...

Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы
Народ!!! Скиньте кто-нибудь код, завтра сдавать уже!!!

3
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
01.11.2018, 15:19
Лучший ответ Сообщение было отмечено i_fil как решение

Решение

Мне трудно досконально разобраться в паскале
поэтому я на всякий случай вылаживаю два варианта
1. вариант сравнивается каждая диагональ со своей
зеркальной диагональю, тоесть каждая диагональ
в верхней части матрицы с подобной лежащей в нижней
части матрицы разделенной по границе главной диагонали.
Выводятся наибольшие результаты при сравнении каждых пар.
2. вариант, все диагонали в верхней части матрицы
суммируются как и все суммы диагоналей в нижней части
матрицы и выводится наибольшая общая сумма.
Первый вариант:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
m=$((n-1))
for((j=1; j < m; j++)); do
    sum1=0
    sum2=0
    i=0
    for((; i < n-j; i++)); do
        ((sum1+=matrix[$i,$((i+j))]))
        ((sum2+=matrix[$((i+j)),$i]))
    done
    if [ $sum1 -gt $sum2 ]; then
        echo $sum1
    else
        echo $sum2
    fi
done

Второй вариант:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
m=$((n-1))
for((j=1; j < m; j++)); do
    i=0
    for((; i < n-j; i++)); do
        ((sum1+=matrix[$i,$((i+j))]))
        ((sum2+=matrix[$((i+j)),$i]))
    done
done
if [ $sum1 -gt $sum2 ]; then
    echo $sum1
else
    echo $sum2
fi


Добавлено через 37 минут
Есть еще такой вариант выводится наибольшая сумма из вех сумм элементов диагоналей))
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
max=0
m=$((n-1))
for((j=1; j < m; j++)); do
        sum1=0
        sum2=0
        i=0
        for((; i < n-j; i++)); do
                ((sum1+=matrix[$i,$((i+j))]))
                ((sum2+=matrix[$((i+j)),$i]))
        done
        if [ $sum1 -gt $max ]; then
                max=$sum1
        fi
        if [ $sum2 -gt $max ]; then
                max=$sum2
        fi
done
echo -e "Maksimum sredi sum elementov diagonaley:\n$max"
1
0 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 4
02.11.2018, 02:49  [ТС]
спасибо большое!!!
все работает!
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
02.11.2018, 11:36
Собрала все вместе, включая главную диагональ и крайние диагонали состоящие из одного элемента.
С подробным выводом на экран. Было интересно
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
max=0
m=$((n-1))
count1=1
count2=$((n+m))
for((j=m; j >= 0; j--)); do
        i=0
        sum1=0
        sum2=0
        for((; j+i < n; i++)); do
                ((sum1+=matrix[$i,$((j+i))]))
                ((sum2+=matrix[$((j+i)),$i]))
        done
        if [ $count1 -eq $count2 ]; then
                echo -e "main diagonal\t   $count1"
                echo -e "summ\t\t   $sum1"
        else
                echo -e "diagonals\t$count1\t"$count2
                echo -e "summ\t\t$sum1\t$sum2"
        fi
        if [ $max -lt $sum1 ]; then
                max=$sum1
                diag=$count1
        fi
        if [ $max -lt $sum2 ]; then
                max=$sum2
                diag=$count2
        fi
        ((count1++))
        ((count2--))
        echo
done
echo -e "diagonal\t   $diag"
echo -e "max summ\t   $max"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2018, 11:36
Помогаю со студенческими работами здесь

Определить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы
Возникла проблема с нахождением минимума среди сумм элементов диагоналей, параллельных главной, листинг по нахождению сумму чётных...

Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы
Дана целочисленная квадратная матрица. Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

Определить: максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы
Дана целочисленная квадратная матрица. Определить: максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

Определить минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы
Дана целочисленная квадратная матрица. Опрделить: 1) сумму элементов в тех строках, которые не содержат отрицательных элементов. 2)...

Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы
Данная целочисленная квадратная матрица. определить: 2) максимум среди сумм элементов диагоналей, параллельных главной диагонали...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru