|
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 12
|
|
Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом04.12.2019, 19:02. Показов 3042. Ответов 9
Метки нет (Все метки)
Народ, помогите, пожалуйста. Студенту нужна помощь. Ссаными тряпками не кидайтесь
Суть вопроса. Помогите с кодом для такого задания: Дана квадратная матрица порядка n(n=7), в которой все элементы различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом. Полученным числом заменить элементы главной диагонали
0
|
|
| 04.12.2019, 19:02 | |
|
Ответы с готовыми решениями:
9
|
|
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
|
|
| 04.12.2019, 19:04 | |
|
Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом
Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, и столбца с наименьшим элементом
1
|
|
|
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 12
|
||||||
| 14.01.2020, 22:33 [ТС] | ||||||
|
Написал тут код, но в нем есть ошибки. помогите исправить, пожалуйста. проблема еще в том, что нужно составить программу из подпрограмм, чтобы основная ее часть состояла из вызываемых подпрограмм
0
|
||||||
|
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,412
|
||||||
| 15.01.2020, 11:01 | ||||||
|
У Вас в описании типов нет описания матрицы. Для начала решите для себя, кто у Вас матрица array[1..n, 1..n] of integer; : mas или matr. Логично было бы предположить, что это matr, но Вы и к переменным типа mas пытаетесь обратиться как к матрице...
И ещё: по заданию матрица какая? В условии, вроде как, нигде об этом не сказано. А то Вас не поймёшь: одно of integer, другое of real... И процедуры ничего не возвращают, поскольку у Вас все формальные параметры передаются исключительно по значению, либо вообще никак не объявлены. Ошибок... Видимо-невидимо. Похоже, Вы всё это сами делали. Это очень хорошо, потому что не страшно не знать, страшно не хотеть знать. Ух ты! Вот это да! Сразу не заметил... Надо же... Какой-то составитель задач научился отличать "больше" от "не меньше" и "меньше" от "не больше"... Нет, вы только поглядите: "у матрицы все элементы различны"... Это для того, чтобы гарантированно были только один максимум и только один минимум. Прямо праздник какой-то. Это для моего перфекционизма. А для Вас - ещё одна проблема: по условию Вам требуется сгенерировать матрицу, все элементы которой различны. Обычно для этого в матрицу пишут возрастающую последовательность, и затем перемешивают элементы. Программа для действительной матрицы:
0
|
||||||
|
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 12
|
||||||
| 25.01.2020, 22:07 [ТС] | ||||||
|
я тут поправил код, оформил заполнение матрицы через процедуру, но теперь встала проблема того, что дальнейшие вычисления просто выдают нули. Наверное, надо заменить процедуру на функцию, но функция вроде как возвращает одно значение, а не целую матрицу?
0
|
||||||
|
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,412
|
|||||||||||||||||
| 26.01.2020, 01:25 | |||||||||||||||||
|
Вы совсем не читали, что я для Вас написал. Почему? Вам не требуется помощь?
Прочитайте не только то, что я написал, но и хоть что-нибудь про подпрограммы и про их параметры, а также про локальные и глобальные переменные. Я Вас очень прошу. Так, для общего развития: современные диалекты паскаля позволяют функции возвращать матрицу, если она пользовательского типа. Нулевая матрица у Вас возвращается потому, что Ваша процедура не изменяет нужную Вам матрицу. Я же писал: И ещё, объявлять глобальные переменные до подпрограмм приводит к трудно устранимым ошибкам из-за перекрытия имён локальных и глобальных переменных. Тем более, что имена глобальных переменных у Вас совпадают с именами формальных параметров. Понимаю, Вы ошибочно полагаете, что это - одни и те же переменные. Это совсем не так. Например, у Вас массив A в строке 4 и переменные min, max, i, j в строке 5 и переменные с такими же именами в строке 7 - это совершенно разные переменные, несмотря на совпадение имён. У Вас четыре варианта: 1. Сделать совсем по-идиотски: те параметры, которые требуется возвратить, передавать по ссылке. Для этого нужно разместить ключевое слово var перед нужными переменными, например:
2. Сделать по-идиотски: вовсе убрать все формальные параметры, поскольку глобальные переменные у Вас объявлены до подпрограмм, и видны во всех подпрограммах, а имена Ваших формальных параметров совпадают с именами соответствующих глобальных переменных. Для этого в строках 7 и 30 уберите то, что в скобках, вместе с самими скобками. Подпрограммы будут изменять глобальные переменные непосредственно. Для Вас это будет проще всего, но решение чуть менее идиотское, чем предыдущее. Да, программа будет работать нормально, плюс ещё будет примером того, как не надо писать программы. 3. Сделать кое-как. Объявить глобальные переменные после подпрограмм. То, что Вы написали, переписать, например, вот так:
3. Сделать по-человечески. Для вещественных чисел уже сделано. Для целых чисел нужно кое-что поменять:
0
|
|||||||||||||||||
|
Модератор
|
|||||||||||
| 26.01.2020, 09:03 | |||||||||||
|
Cyborg Drone,
Пара мелких замечаний возникла при чтении: Вместо 54321 итераций тасование Фишера-Йетса было бы в самый раз ![]() С точки зрения тасования массив линеен, нет смысла этому противиться ![]() Добавлено через 10 минут Опечаточка закралась (единичка потерялась):
Чистая косметика (если предположить, что TP жив (или режимы совместимости с ним)):
1
|
|||||||||||
|
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,412
|
||||||
| 26.01.2020, 10:43 | ||||||
|
Заменить процедуру генерации массива:
0
|
||||||
|
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 12
|
||||||
| 02.03.2020, 22:32 [ТС] | ||||||
|
Помогите, пожалуйста. В одной из процедур, а именно scalar есть ошибка. я не могу ее никак исправить. при запуске выдается такая ошибка:
88 88 77 00 88 99 66 33 00 22 00 66 00 22 77 88 33 22 66 88 66 99 77 44 00 33 33 66 22 55 66 33 22 11 55 99 00 66 77 11 33 11 00 44 66 99 88 00 22 Unhandled Exception: System.IndexOutOfRangeException: Индекс находился вне границ массива. в lab666.mas.get_val(Int32 param) в C:\FPC\2.6.4\bin\i386-win32\lab666.pas:строка 16777215 в lab666.Program.scalar(Int32 i, Int32 scal, Int32 kmin, Int32 kmax, mas A) в C:\FPC\2.6.4\bin\i386-win32\lab666.pas:строка 21 в lab666.Program.$Main() в C:\FPC\2.6.4\bin\i386-win32\lab666.pas:строка 46 в lab666.Program.Main()Программа завершена, нажмите любую клавишу . . .
0
|
||||||
|
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,412
|
|||||||||||
| 03.03.2020, 00:15 | |||||||||||
Сообщение было отмечено Klukva10 как решение
Решение
Индексы массива у Вас могут быть от 1 до 7. Глобальные числовые переменные инициализируются нулём, в том числе, kmin и kmax. В строке 46 Вы передаёте в процедуру scalar в качестве формальных параметров сплошные нули. В строке 21 в качестве индексов используются kmin и kmax, которые равны 0, а должны быть в пределах от 1 до 7, вот Вам и выход за границы массива.
Но это всё ерунда. Вы не обратили внимание, что перед некоторыми формальными параметрами я пишу префиксы var и const? Как думаете, зачем я это делаю?1) для красоты 2) для ровного счёта 3) чтобы повыпендриваться 4) чтобы изменить способ передачи формального параметра Выбрали ответ? Неверно, правильный ответ 4). Ваши процедуры и функции, по сути, не делают ничего, потому что они ничего не возвращают в основную программу. Параметры, переданные по значению (без префиксов var и const), при их изменении в подпрограмме, в основной программе не изменяются. Все параметры Вы только так и передаёте, поэтому, если заставить программу заработать без var и const, окажется, что внутри процедуры massiv матрица успешно сгенерировалась и напечаталась, а после выхода из процедуры почему-то все её элементы как были, так и остались нулевыми... Изумлению не будет предела. Для того, чтобы переменные, передаваемые в подпрограмму, изменялись и в основной программе, они должны передаваться по ссылке (с префиксом var). В этом случае при изменении формального параметра в подпрограмме, на самом деле изменяется переменная в основной программе, на которую ссылается формальный параметр. Также по ссылке часто передаются переменные, занимающие большой объём памяти, для исключения копирования этого самого большого объёма памяти. В этом случае, если требуется предотвратить изменение переменной в подпрограмме, вместо префикса var используется префикс const. Вы не используете локальные переменные (это такие, которые видны в подпрограмме, но не видны в основной программе). Вместо этого Вы передаёте глобальные переменные в подпрограмму по значению. Процедуру randomize принято запускать в основной программе. У Вас массив печатается два раза. Имеется смысл вынести печать массива в отдельную процедуру. Размер массива лучше объявить константой. Вот скажет Вам преподаватель: "А сделайте массив 5х5". Сколько Вам 7 на 5 найти и поменять? А так - только константу, и всё. Вот так примерно Вам нужно было написать:
Почему Вы не взяли мою готовую программу из поста #6 (ту, которая последняя)? Испугались? Так попросили бы, я бы её подрихтовал, как Вы пожелаете. По сути, моя программа ничем не отличается от того, что Вы хотите написать. За исключением генерации массива. Если массив генерировать так, как Вы, а не так, как по заданию, то из моей программы получится вот это:
Ну ладно. "Для достижения идеала" ещё названия переменных и подпрограмм на псевдорусские поменять. Но это не обязательно: по-моему, без разницы, что change, что zamena. Можно ещё не печатать минимальный и максимальный элементы, тогда в основной программе можно будет использовать только imax и jmin, и всё немножко упростится, но будет как-то не очень: скалярное произведение печатаем, а максимум с минимумом - почему-то не печатаем. Непорядок.Посмотрите, потестируйте...
1
|
|||||||||||
| 03.03.2020, 00:15 | |
|
Помогаю со студенческими работами здесь
10
Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом
Найти произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом Найти скалярное произведение строки, в которой находится max элемент матрицы, на столбец с min элементом
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
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
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
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 позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|