![]() |
|
|
![]()
|
|
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Здравствуйте хлопцы!!! Нужна помощ.
Пишу консольное приложение в билдере. У меня 2-а модуля. Из главногомодуля вызывается процедура(она во втором модуле). Эта процедура должна передать матрицу в гл. модуль. Вопрос - как это сделать????? |
|||
|
||||
| BreakPointMAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
Как именно у тебя хранится матрица? (двумерный C'шный массив, вектор векторов или что-то другое?) Что ты подразумеваешь под словом "модуль"? (просто совокупность .h+.cpp или что-то еще?) И в чем именно проблема?
-------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Вот : модуль Tabl.cpp
void Vvod (/*что-то здесь*/) { int tablica[4][6] ={ {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, }; } Вот гл. прога #include <Tabl.cpp> int main() { int tablica[4][6]; Vvod(/*и что-то здесь*/); } Добавлено через 1 минуту и 30 секунд Как правильно вызвать процедуру?? |
|||
|
||||
| Klin |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Может я что-то не понимаю, а в чем проблема? Можно так:
Главный модуль.
Второй модуль.
Все работает. Добавлено через 28 секунд или нужно получить весь массив одной функцией? -------------------- Я человек - попробуйте обвинить меня за это. |
||||
|
|||||
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Именно!!!!!
|
|||
|
||||
| fish9370 |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
передавать массив через стек не рационально.. завтра ты захочешь увеличить массив.. что тогда? в твоем случае я бы объявил глобальный массив и ничего бы никуда не передавал.. но сделать это можно, например, описав предварительно структуру содержащую такой массив:
а дальше передавай его себе в функцию:
не забудь инициализировать массив.. Добавлено через 8 минут и 45 секунд
в данном случае твой массив "tablica[4][6]" из другой функции не будет тебе доступен, поскольку он определен внутри функции Vvod(), в локальной области видимости и будет удален, как только функция завершит свою работу.. Это сообщение отредактировал(а) fish9370 - 6.5.2007, 19:19 -------------------- undefined |
||||||||
|
|||||||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Тогда надо будет заполнять массив в функции, а это не так хорошо. ИМХО тогда уже лучше создать функцию в главном модуле. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Хорошо.
Я инициализирую массив в главном модуле, но значения заносить то мне надо в п/п Vvod Добавлено через 1 минуту и 23 секунды И не по отдельности а все элементы сразу |
|||
|
||||
| Klin |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Это практически тоже самое Главный модуль.
Второй модуль.
Все работает, но не знаю, правильно ли это и не будет ли ошибок в будущем. -------------------- Я человек - попробуйте обвинить меня за это. |
||||||
|
|||||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
-------------------- undefined |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
А я предупреждал По логике надо задать тип функции, которая будет возвращать массив. Это возможно, но как реализовать пока не знаю :( Сейчас с временем напряг. Возможно через type? Время выберу что-нибудь придумаю. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Я сделал так:
//Модуль VVod.cpp #include "VVODmod.h" #include <stdio.h> #include <string.h> #include <stdlib.h> void Vvod (tablica) { int tablica[4][6]= { {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0} }; ... ... } //------------------------------------------------------------ //гл. модуль #include <VVod.cpp> int main() { int a [4][6]; Vvod(a); } И вот что вылезает: [C++ Error] VVODmod.cpp(37): E2238 Multiple declaration for 'tablica' |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
svyashennik, и что это вам дало?
Ошибку можно исправить, но работать не будет :( Я же по другому писал! Второй модуль.
Это сообщение отредактировал(а) Klin - 7.5.2007, 20:51 -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
задача изначально поставленна неверно.. отсюда неправильные пчелы и неправильный мед.. прошу переформулировать задачу.. хочу знать зачем нужны эти "два модуля".. хочется услышать общую идею..
передавать массив через стек в функцию или из функции не правильно.. а в данном случае предпринимается именно такая попытка, мне кажется плохо, когда некоторые товарищи вместо того чтобы объяснить парню, что это не правильно стараются его же кривыми методами ему помочь.. как правило, в качестве параметров (через стек) передаются переменные небольшого объема, их количество тоже стараются уменьшить.. если требуется работать с большим количеством данных, в функцию передается указатель.. если и в этот раз мой пост будет проигнорирован - я пас.. -------------------- undefined |
|||
|
||||
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Дело в том, что у меня программа в которой несколько подпрограмм делают различные пребразования с таблицей (одной и конкретного размера) .
вот я и подумал чтоб одна п/п вводила данные, другая считала и т.д. и они обменивались этой таблицей (матрицей) |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |