2 / 2 / 0
Регистрация: 21.05.2017
Сообщений: 25
1

Передача массива из функции в функцию

14.11.2017, 20:50. Показов 1692. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет народ) Объясните плиз,как возвращать массив из функции.
Ниже функция из которой надо вернуть массив TipDannih.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
int PoiskStrokSTipamiDannih()
{
    char c;
    int k=1,tip=0,TipDannih[5],t=0;
    FILE *filik=fopen("tigr.txt","r");
    while((c=getc(filik))!=EOF)
    {
        if(c=='\n') k++;
        if(c=='i' || c=='f')
        {
            c=getc(filik);
            if(c=='n' || c=='l')
            {
                c=getc(filik);
                if(c=='t')
                {
                    TipDannih[tip]=k;
                    tip++;
                    t++;
                }
                if(c=='o')
                {
                    c=getc(filik);
                    if(c=='a')
                    {
                        c=getc(filik);
                        if(c=='t')
                        {
                            TipDannih[tip]=k;
                            tip++;
                            t++;
                        }
                    }
                }
            }
        }
    }
    cout<<"Nomera strok s tipami dannih-->";
    for(tip=0;tip<t;tip++)
    {
       cout<<TipDannih[tip];
    }
    cout<<endl;
    fclose(filik);
    return TipDannih[tip];
}
Ниже функция которая должна принять это массив из передать в следующую функцию(действия по case 1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void RUN(int kol,int TipDannih[])
{
    int s,TipDanni[5];
    cout<<"Enter 1 or 0"<<endl;
    scanf("%d",&s);
    switch(s)
    {
        case 1:
            PoiskStrokSoZnakom();
            TipDannih[5]=PoiskStrokSTipamiDannih();
            OpredelenieTipaPerem(kol,TipDanni);
            break;
        case 0:
            exit(1);
            break;
        default:
            system("cls");
            cout<<"Nekorrektnii vvod,poprobyi snova:)"<<endl;
            RUN(kol,TipDannih);
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2017, 20:50
Ответы с готовыми решениями:

Передача массива в функцию и из функции
Здравствуйте, у меня простая задача, я ее решила, но вот с передачей данных от функций к main,...

Передача двумерного массива из функции в функцию
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; const int n=10; void...

Передача в функцию массива, и в функции передать массив не получаеться
Доброго дня. Вот в чем дело: Есть структура struct Cell { Point position; image picture;...

Передача массива в функцию используя указатель на функцию
У меня имеется готовая программа без передачи функции в функцию указателем, мне нужно передать...

11
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
14.11.2017, 22:04 2
Цитата Сообщение от Qwer1ty7 Посмотреть сообщение
как возвращать массив из функции
Статический - никак.

Самый простой способ - передавать в функцию массив, в который нужно записать результат.
1
2 / 2 / 0
Регистрация: 21.05.2017
Сообщений: 25
14.11.2017, 22:20  [ТС] 3
Тобишь тогда лучше(не лучше) для решения проблемы сделать массив глобальным
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
14.11.2017, 22:28 4
Лучше передавать его отдельным параметром.
0
Эксперт С++
8726 / 4305 / 959
Регистрация: 15.11.2014
Сообщений: 9,752
14.11.2017, 23:30 5
Цитата Сообщение от likehood Посмотреть сообщение
Статический - никак.
http://rextester.com/NARXA99153



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
 
 
// --- синтаксис передачи массива в функцию.
template<class T, size_t N>
void Fill( T (&arr)[N] )   
{
    for(size_t i=0;i<N;++i )
        arr[i] = static_cast<T>(i);
        
}
 
// --- синтаксис возвращения массива из функции
template<class T, size_t N>
T ( &Get() )[N]
{
    static T arr[N];
    return arr;
}
 
 
// --- синтаксис функции, которая принимает массив по ссылке
// и возвращает массив по ссылке
template<class T, size_t N>
T (&Example( T (&arr)[N] )   )[N]
{
    Fill(arr);
    
    auto& dst = Get<T,N>();
    
    for(size_t i=0;i<N;++i ) 
        dst[i]= arr[i]*10;
    
    return dst; 
}
 
int main()
{
    std::cout << "Hello, world!\n";
    
    int a[10] = {};
    
    const auto& result = Example(a);
    
    std::cout<<"int result[10] = {";
    for(const auto& i: result)
        std::cout<< i <<", ";
    std::cout <<"};\n";
    
}
1
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
15.11.2017, 01:37 6
Самый простой способ - использовать std::vector/std::array и передавать их по ссылке
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
15.11.2017, 08:32 7
hoggy, интересный способ, не знал о таком. Синтаксис конечно суровый.
Жаль что не работает с автоматическими массивами.
0
Эксперт С++
8726 / 4305 / 959
Регистрация: 15.11.2014
Сообщений: 9,752
15.11.2017, 08:40 8
Цитата Сообщение от likehood Посмотреть сообщение
Синтаксис конечно суровый.
путь typedef спасет отца русской демократии.

Цитата Сообщение от likehood Посмотреть сообщение
Жаль что не работает с автоматическими массивами.
все там прекрасно работает.
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
15.11.2017, 08:53 9
Цитата Сообщение от hoggy Посмотреть сообщение
все там прекрасно работает
То есть можно вернуть из функции автоматический массив? У меня не получилось, компилятор ругается.
0
Эксперт С++
8726 / 4305 / 959
Регистрация: 15.11.2014
Сообщений: 9,752
15.11.2017, 08:57 10
Цитата Сообщение от likehood Посмотреть сообщение
То есть можно вернуть из функции автоматический массив?
ссылку на автоматический массив.
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
15.11.2017, 09:05 11
Цитата Сообщение от hoggy Посмотреть сообщение
ссылку на автоматический массив
Вернуть ссылку на локальный автоматический массив? Так он же разрушается при выходе из функции.
0
Эксперт С++
8726 / 4305 / 959
Регистрация: 15.11.2014
Сообщений: 9,752
15.11.2017, 13:24 12
Цитата Сообщение от likehood Посмотреть сообщение
Вернуть ссылку на локальный автоматический массив? Так он же разрушается при выходе из функции.

C++
1
2
3
4
int& foo(int& r)
{
    return r; 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2017, 13:24
Помогаю со студенческими работами здесь

Передача двухмерного массива из функцию в функцию
Допустим у меня есть функция, в которой &quot;генерируется&quot; массив. Но нужно его передать в другую...

Передача функции в функцию?
Здравствуйте. Есть функция: void f (char*) В нее мне нужно записать некоторую строку и...

Передача функции в функцию?
Есть задача. Вычисление определенного интеграла тремя способами для трех функций естественно что...

Передача массива структур в функцию не указывая размера массива
Я читаю с командной строки файл в котором содержится массив структур. Есть библиотека с функцией в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru