0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 43
|
||||||
1 | ||||||
Не работает заполнение двумерного массива30.04.2018, 21:28. Показов 866. Ответов 17
Метки нет (Все метки)
Написал процедуру заполнения двумерного массива. Не хочет работать. Тупо выдает окно с завершением программы. Где здесь ошибка?
0
|
30.04.2018, 21:28 | |
Ответы с готовыми решениями:
17
Заполнение двумерного массива Заполнение двумерного массива Заполнение двумерного массива Заполнение двумерного массива |
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
|
|
30.04.2018, 21:35 | 2 |
Ну, во-первых, тут у тебя не объявлен массив a, и его размер - p1, p2, тем не менее такое вызывает понятную ошибку при компиляции. Допустим ты это сделал, однако выделил ты память (если работаешь с указателями), хотя это должно вызывать ошибку, потому бы ты понял. К тому же ты не выводишь не одно значение, ты просто заполняешь массив.
По хорошему следует выкладывать более полный код программы.
0
|
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 43
|
||||||
30.04.2018, 21:37 [ТС] | 3 | |||||
Прошу прощения, вот.
0
|
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
|
||||||
30.04.2018, 21:41 | 4 | |||||
BlackVoron, массив передается по значению, это значит что исходный объект копируются, и все действия происходят уже с копией объекта, а не непосредственно с ним.
Вот так все будет работать:
0
|
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 43
|
|
30.04.2018, 21:43 [ТС] | 5 |
Если так прописываю - выдает ошибки
0
|
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
|
||||||
30.04.2018, 21:45 | 6 | |||||
В таком случае стоит передавать массив с помощью указателей:
0
|
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 43
|
||||||
30.04.2018, 21:47 [ТС] | 7 | |||||
А теперь в строчке вызова выдает ошибку
0
|
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
|
|
30.04.2018, 21:48 | 8 |
BlackVoron, в тексте ошибки всё ясно и понятно написано
0
|
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 43
|
|
30.04.2018, 21:50 [ТС] | 9 |
Ну это я вижу. Вопрос как это поправить...
Получается, что в функцию я передаю указатель на массив А когда вызываю ее должен передавать a[N][M] получается? Или как?
0
|
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
|
|
30.04.2018, 21:51 | 10 |
BlackVoron, ну как вариант можно просто объявить указатель на указатель и работать с ним. Не вижу никаких проблем
1
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
||||||
30.04.2018, 21:58 | 11 | |||||
строка 17 j<p1, строка 26 j<p2
но использовать статический при вводе размера с клавиатуры не по стандарту, нужно динамический:
1
|
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
|
|
30.04.2018, 22:02 | 12 |
Yetty, там размерность через define задана. Потом просто используется часть выделенного объёма
Добавлено через 1 минуту Проблема в описании метода. В этом плане, как по мне, действительно удобнее использовать указатели
1
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
|
30.04.2018, 22:08 | 13 |
там это где ? условие автор темы решил не выкладывать, а коды с ошибками сбрасывают для исправлений.
как говорил в коде автора нужно исправить и всё должно работать
1
|
"C with Classes"
|
||||||
30.04.2018, 22:16 | 14 | |||||
к массивам это не относится.
Добавлено через 1 минуту в функцию передается указатель на первый элемент массива.
1
|
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 43
|
||||||
30.04.2018, 23:09 [ТС] | 15 | |||||
Все равно выдает ошибку
Путаюсь в этих всех указателях. Одномерный массив передается просто, а с матрицами дичь какая то получается
0
|
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 43
|
|
30.04.2018, 23:18 [ТС] | 16 |
А все, разобрался
А за помощь всем большое спасибо!
0
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
|
01.05.2018, 00:38 | 17 |
Да ничего Вы не путаете. Статический двумерный массив, например x[4][4] и его размер можно передать непосредственно, примерно как Вы делали: void F (int x[4][4], int n) или так: void F (int x[][4], int n), а в передаче по указателю есть специфика, т.е. в отличие от передачи динамического, нужно так: void F (int (*x)[4], int n) - мне это подсказали, сам тоже не мог въехать. А вообще используйте динамический.
Добавлено через 11 минут Для дальнейшего освоения рекомендую Вам решить новую задачу - вывод массива не через void, а через обычную функцию.
1
|
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 43
|
|
01.05.2018, 10:55 [ТС] | 18 |
0
|
01.05.2018, 10:55 | |
01.05.2018, 10:55 | |
Помогаю со студенческими работами здесь
18
Заполнение двумерного массива Заполнение двумерного массива Заполнение двумерного массива Заполнение двумерного массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке
В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
|
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
|