Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1

Вернуть матрицу из функции

15.04.2012, 15:21. Показов 19893. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
собственно такой вопрос, любыми методами нужно передать двумерный массив через функцию обратно, я не знаю как сделать это в с++, знаю только как в дельфи сделать это можно, но понадобилось решение в с++

кто в курсе, объясните или напишите пожалуйста небольшой пример

заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.04.2012, 15:21
Ответы с готовыми решениями:

Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке.

Как вернуть матрицу из функции
На фото функция которая не позволяет вернуть результат потому что этот результат не целое число, нужно чтобы возвращалась матрица :(

Как вернуть матрицу из потока?
Хочу сделать вычисления в своём потоке, форму в своём и вывести результат(эту самую матрицу) на форму. namespace ТП { public...

26
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 17:50
Студворк — интернет-сервис помощи студентам
Arcor, ну вам нужно push_back'ать вектор целиком. Но раз вам известны размеры матрицы, почему бы сразу не создать её целиком и не применять оператор []?
0
Заблокирован
15.04.2012, 17:54
Цитата Сообщение от Nekto Посмотреть сообщение
Вы сейчас ломаете мой взгляд на массивы... Почему память, выделенная с помощью new, к которой можно обращаться через индекс, не считается массивом?
Потому что "массив" - это синтаксическая конструкция языка. При помощи которой, вы можете создавать различные типы данных.

Например: int a[10] и int b[20] - это два принципиально разных типа данных.
Так же, эти два принципиально разных типа данных принципиально отличаются от типа данных "указатель".

Соответственно, правомерно сделать проверку типов. Функция может принимать только массив из 10 элементов, и браковать на стадии компиляции все прочие массивы, в том числе - сырые указатели.

Что касается адреса памяти - это всего лишь адрес. "Массив" на языке с++ не является "адресом памяти".
1
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
15.04.2012, 18:07  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
Arcor, ну вам нужно push_back'ать вектор целиком. Но раз вам известны размеры матрицы, почему бы сразу не создать её целиком и не применять оператор []?
ну так мне ее сперва заполнить нужно программно, скажем таким методом я буду считывать все из файла в массив, а в другой функции буду уже забирать из этой функции переделанные и обработанные значения. Поэтому и нужно было что-то независимое, и с которого можно было бы забирать результат
0
Заблокирован
15.04.2012, 18:08
Цитата Сообщение от silent_1991 Посмотреть сообщение
Мы всё равно не сможем упаковать что-то в массив внутри функции и вернуть именно массив как самостоятельный объект.
Ну это максимум, что можно сделать с обычным массивом.
Нельзя из функции вернуть массив по значению.

C++
1
2
// : error C2090: функция возвращает массив
int (Test1(  int (arr)[10] )   )[10]       {  return arr; }
С чем связанно данное ограничение, лично мне не понятно. С другой стороны, на практике я ни разу не сталкивался с ситуацией, когда очень надо было бы вернуть массив по значению.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:10
Arcor, создаём объект:
C++
1
std::vector<std::vector<type> > matrix(size1, std::vector<type>(size2));
После этого с ним можно работать как с массивом, созданным так:
C++
1
type matrix[size1][size2];
Добавлено через 1 минуту
Цитата Сообщение от Bers Посмотреть сообщение
Нельзя из функции вернуть массив по значению.
Вот в этом и заключалось моё начальное "вернуть полноценный, автономный массив" .
1
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 18:11
Цитата Сообщение от silent_1991 Посмотреть сообщение
Nekto, тут смотря как посмотреть. Можно назвать массивом байт объект любого типа, int, double и т.д.
Ну вот, например, "Уничтожение массива delete[] pointer"(Бьерн Страуструп). Называется именно уничтожение массива. И, раз его можно применить к указателю, то это можно назвать массивом. ИМХО.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:16
Nekto, всё дело в уровне абстракции. Раз мы работаем с указателем, под который выделена память, как с массивом, то и думаем про него как про массив. Однако фактически это не массив (массив ячеек памяти - да, но не массив на уровне языка).

Добавлено через 3 минуты

Не по теме:

Пардон, не "под который выделена память", а "который указывает на выделенную памяти". Под указатель память выделяется при создании.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.04.2012, 18:16

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

Как в функции вернуть значение, а потом продолжить работу этой функции?
Есть функция main, которая возвращает определенное значение. Это значение должно вернутся в течении 1.5 секунд. Проблема в том, что в этой...

Динамическое выделение памяти внутри функции (что вернуть из функции, если не удалось выделить память?)
такое дело, есть функция, которая выполняет некоторую операцию, функция при успешном выполнении должна вернуть 0, при ниудачном код...

Вернуть из функции объект класса-родителя функции
Приветствую всех. Вопрос изложу в коде. class TSomeClass { int data; public: // Правильно ли создана функция? TSomeClass...

Вернуть массив из функции
type Arr = array of string; .. function TForm1.StrStr(str: string): Arr; begin Result:= Copy(str,1,Pos('1', str)); end; ...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru