|
0 / 0 / 0
Регистрация: 28.05.2017
Сообщений: 7
|
||||||
Ошибки 201/216 при попытке перемножить динамические массивы28.01.2019, 17:37. Показов 2278. Ответов 17
Добрый вечер,
решаю задачу такого характера: нужно из матрицы А получить матрицу В = А + А2 + ... + Аn. Натуральное число n и порядок матрицы вводятся с клавиатуры. С выделением памяти, заполнением матрицы, ее выводом, а так же со сложением проблем нет - программа все считает и выводит. Как только начала тестить умножение - при запуске после ввода А выскакивают ошибки 201, 216. С чем это может быть связано, и как это исправить? Динамические структуры только начали проходить, и пока не все понятно ![]()
0
|
||||||
| 28.01.2019, 17:37 | |
|
Ответы с готовыми решениями:
17
Как обойти системные ошибки 106 и 201 при поиске Код ошибки 201. Тип переменных менял, все одно ошибка при исполнении программы
|
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
||
| 01.02.2019, 00:04 | ||
|
попробуй использовать функции вместо процедур. например, написать функцию возведения матрицы в степень. И не нужно называть матрицу числом, они от этого грустят
0
|
||
|
Модератор
|
|||||||||||||||||
| 01.02.2019, 00:33 | |||||||||||||||||
|
https://www.cyberforum.ru/post13171411.html
Добавлено через 12 минут Ошибки немного в другом.
но лучше использовать динамические массивы, раз уж они есть в языке:
burgundel,
Для динамических массивов вам в этом поможет Copy().
0
|
|||||||||||||||||
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
|||||||
| 01.02.2019, 15:29 | |||||||
|
Ведь как вы лодку назовете, так она и поплывет. Не говоря уж о подводных камнях указателей Код должен быть понятен, тогда его легче дебажить. Код ниже не идеален, но он хотя бы работает
0
|
|||||||
|
Модератор
|
||
| 01.02.2019, 16:50 | ||
|
0
|
||
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
||
| 02.02.2019, 20:38 | ||
|
этот пример показывает, что не все так гладко при использовании указателей. а ваш пример не оформлен должным образом.
0
|
||
|
Модератор
|
||||||||||||||||||||||||||||||||||||
| 03.02.2019, 15:45 | ||||||||||||||||||||||||||||||||||||
|
vlisp,
про бал не понял, ну да ладно... про "не оформлен" -- что там оформлять-то? 1) заменить строку 5 на
6) если зачем-то очень хочется очистить память руками:
Собственно, вот и вся разница. Вся эта тривиальщина -- точно не "космические технологии". Добавлено через 9 минут Если наложить ограничение на то, что в mMul() фактический параметр r не может быть одним из фактических a, b, то можно убрать промежуточную матрицу t и распределение памяти под нее, сразу заполнять r.
0
|
||||||||||||||||||||||||||||||||||||
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
||
| 03.02.2019, 16:39 | ||
|
Есть такое явление, когда человек просит помощи в одном, а ему взамен предлагают другое и не факт, что это другое ему нужно. Вот вам и бал. Вы вероятно предполагали, что ваш код будут просто копировать в свой.. Но лучше оформить код в виде модуля. Написать комментарии, отформатировать код, чтоб он был читаемым, вставить копирайт. и приложить файл модуля для скачивания. Вот это я называю правильно оформленный код.
0
|
||
|
Модератор
|
|||||
| 03.02.2019, 18:34 | |||||
|
Плюсы (1): синтаксис FPC позволяет обращаться к указателю как к массиву, поэтому вместо a[i]^[j] имеем вполне себе обычное a[i][j] или a[i,j]. Минусы (1): громоздкое создание/удаление. Плюсы (2): создание/удаление/копирование тривиальны. Минусы (2): адресация в виде a[i*n+j], тем не менее, последовательное обращение к элементам как построчно так и поколоночно поддается некоторой оптимизации. И да, дописать unit SomeShit; interface, imlementation, end.,uses SomeShit; -- непосильная задача ![]() Добавлено через 18 минут Добавлено через 55 минут Ах да, Randomize внутри fill_random_matr() -- идея не очень хорошая, если не сказать хуже.
0
|
|||||
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
||||||||
| 04.02.2019, 01:00 | ||||||||
0
|
||||||||
|
Модератор
|
|||||||||||
| 04.02.2019, 13:32 | |||||||||||
|
vlisp,
в новой mult_matr временной матрицы действительно достаточно, кроме того, можно легко обойтись без копирования содержимого, достаточно копирования одного указателя:
0
|
|||||||||||
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
||||||
| 04.02.2019, 15:07 | ||||||
|
нет, что-то не получается, заметил очепятку вместо a[j,k] Нужно b [j,k]. но результат все равно неверный
0
|
||||||
|
Модератор
|
|||||||||||
| 04.02.2019, 17:52 | |||||||||||
vlisp, проверяйте.
0
|
|||||||||||
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
|
| 04.02.2019, 23:29 | |
|
опять вы со своими массивами... ну, поймите это мне не интересно, мне интересно понять почему не работает код, который по идее должен работать
0
|
|
|
Модератор
|
|
| 05.02.2019, 02:17 | |
|
vlisp,
почему своими, с кривыми динамическими по двойному GetMem/FreeMem, все ровно как просили ![]() Найдете и проанализируете отличия — выясните источник ошибки... Добавлено через 6 минут Для сверки расчетов можно вместо Randomize задавать в начале одинаковый RandSeed, генерируемые последовательности будут воспроизводимыми.
0
|
|
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
|
| 05.02.2019, 02:38 | |
|
проблема в том, что процедура mult_matr в обоих случаях умножает матрицу правильно, а в итоге, получается разный результат. причем если создавать 1 временную матрицу, то результат меньше, подозреваю, где-то неинициализированная матрица с нулями перемножается, но где - непонятно. какой-то для меня неуловимый побочный эффект, которого нет, когда создаешь 2 матрицы (1 вариант)
чет у меня ваши имена процедур, ассоциировались с массивами... у вас то же самое, что и у меня, только имена другие, разве не так? вы проверяли свой код на правильность вычислений?
0
|
|
|
1067 / 988 / 153
Регистрация: 10.08.2015
Сообщений: 5,394
|
|
| 05.02.2019, 11:05 | |
|
0
|
|
| 05.02.2019, 11:05 | |
|
Помогаю со студенческими работами здесь
18
Ошибки при попытке подключения к MySQL При попытке запустить ВПН выдаются ошибки Ошибки при попытке прочитать в указанном месте Вылетает программа при попытке вывести массивы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|