Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возврат из функции 
:(
    Опции темы
Гость_Zorro
Дата 4.7.2004, 20:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите плз, как организовать возврат массива из функции?
Типа ентого пишу:

Код

str2ar(AnsiString instr)
{
   AnsiString outstr[3];
   outstr[1]="sd";
   outstr[2]="sd2";
   outstr[3]="sd3";
   return([b]outstr[/b]);
}


а мне компилятор (builder) ругается...

Тут такая задача: строка - набор значений разделенных определенным символом, надо эти значения загнать в массив.
Может есть какая функция для реализации ентого? а?
  Вверх
LOL
Дата 4.7.2004, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 29.6.2004
Где: Подмосковье

Репутация: нет
Всего: нет



Зачем передоввать в функцию instr если он в ней не используется?
Может быть instr это и есть массив который надо заполнить?
из функции достаточно вернуть одну ечейку массива, чтобы потом восстановить весь массив!!!

PM MAIL   Вверх
Гость_Zorro
Дата 4.7.2004, 22:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я написал ради примера.... хорошо, тогда так:

Код

str2ar(AnsiString instr)
{
  AnsiString outstr[3];
  ... // здесь идет код разделения строки на 3 части и загонения ее в массив
  return(outstr);
}


Я незнаю как возвратить строку или массив с помощью return - если тока целое. sad.gif
  Вверх
bel_nikita
Дата 5.7.2004, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Что за тип такой AnsiString? Борланда не знаю. Как хранятся данные в этом типе?
Вот, типа того. Я думаю знатоки борланда меня поправят wink.gif
Цитата
AnsiString* str2ar(AnsiString instr)
{
  AnsiString* outstr;
  outstr=new AnsiString[3];
  // здесь идет код разделения строки на 3 части и загонения ее в массив
  return outstr;
}

Под AnsiString я подразумеваю char.
Да-а, потом, главное не забыть сделать delete [] smile.gif


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Leopard25
Дата 5.7.2004, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



// описание
void Create(int A_MasPair[20][2]);

// вызов
int MasPair[20][2];
CreateMasPairNogID(MasPair);


// функция
void CPageTask::Create(int A_Mas[20][2])
{

Всё что сделаешь здесь с A_Mas[20][2] отразится на MasPair[20][2]

}
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Олег М
Дата 5.7.2004, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Так тебя не чем устраивает
Код
void str2ar(AnsiString instr, AnsiString *outstr)
{
  outstr[1]="sd";
  outstr[2]="sd2";
  outstr[3]="sd3";
}

PM MAIL ICQ   Вверх
achmed
Дата 5.7.2004, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 12.4.2004

Репутация: нет
Всего: нет



если пишешь на C++, то возвращать из функции то, что нужно обязательно удалить не есть хорошо, Олег М предложил неплохой вариант, но можно его обобщить:

template<class out>
void str2ar(AnsiString instr, out it)
{
 *(it++) = "sd"
*(it++) = "sd2"
*(it++) = "sd3"
}

вызов (возможны другие варианты)
#include <list>
#include <iterator>
using namespace std;

.....

list<AnsiString> l;
str2ar(anystr,back_insert_iterator<list<AnsiString>>(l));





PM MAIL   Вверх
Guest
Дата 6.7.2004, 02:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ДА ВЫ ДАЛБАЕБЫ ВСЕ [censored 11] [censored 12] ПРОГРАМЕРЫ [censored 12]Ы
  Вверх
gepard
Дата 6.7.2004, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Сколько же идиотов на свете sad.gif
А вообще, зачем возвращать массив, когда можно сразу в него писать?
Код

#include <stdio.h>
#include <string.h>
void func(char chr[])
{
char* chr2;
chr2=&chr[0];
for (__int8 i=0;i<strlen(chr);i++)
 chr2[i]='1';
}
void main()
{
char chr[]={"Hello World!"};
printf("Before:%s\n", chr);
func(chr);
printf("After :%s\n", chr);
}




--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0739 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.