Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
#1

написать функцию, возвращающую массив - C++

19.01.2010, 14:14. Просмотров 1813. Ответов 11
Метки нет (Все метки)

Всем здравствуйте,

Вопрос такой:

нужно написать функцию, которая возвращает массив из двух чисел, и я не хочу использовать
C++
1
std::pair
.
Следующий вариант работает вроде:

C++
1
2
3
4
5
6
int* return_array(){
 int arr[2];
  arr[0] = 0;
  arr[1] = 0;
  return arr;
}
но так ничего не гарантирует сохранения информации в массиве.

Можно еще выкрутиться так:

C++
1
2
3
4
void return_array(int arr[2]){
  arr[0] = 0;
  arr[1] = 0;
}
а есть ли какой-то способ поэлегантнее? чтобы и в main вызывать

C++
1
2
int arr[2];
arr = return_array();
и безопасность обеспечить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2010, 14:14     написать функцию, возвращающую массив
Посмотрите здесь:

C++ Написать функцию, возвращающую количество гласных в произвольном слове
Написать функцию, возвращающую количество цифр в строке. C++
C++ Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив
Написать функцию принимающую массив и возвращающую указатель на динамический массив C++
Написать функцию, возвращающую случайное число от 2 до 6 C++
Написать функцию, возвращающую квадрат переданного ей параметра C++
Написать функцию, возвращающую сумму всех элементов массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
19.01.2010, 14:24     написать функцию, возвращающую массив #2
массивы с помощью return massiv нелья делать. передавайте адрес первого элемента и количество элементов в массиве и работайте с ним в функции.
CheshireCat
Эксперт С++
2890 / 1239 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
19.01.2010, 14:32     написать функцию, возвращающую массив #3
Ну а в чем проблема-то?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct my_pair
{
    int first;
    int second;
};
 
my_pair my_super_func( тут параметры.... )
{
    //..........
    my_pair p;
    p.first = 0;
    p.second = 100;
    return p;
}
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
19.01.2010, 14:34  [ТС]     написать функцию, возвращающую массив #4
Очень помогли очевидным ответом
как делать нельзя, я знаю. Вопрос был в том, как делать можно. Это ведь тема для начинающих, правда?
Я предлагаю "неправильный" способ "в лоб", и правильный (с void). Спрашиваю, как можно сделать еще. Вводить еще и длину массива привильно, но это немного усложняет код по сравнению с функцией void?
BornLeader
50 / 46 / 1
Регистрация: 16.05.2008
Сообщений: 162
19.01.2010, 14:35     написать функцию, возвращающую массив #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void return_array(int* arr, int size)
{
     for(int i=0;i<size;i++) // какая то инициализация,
       arr[i] = 0;           // например так
}
 
int main(void)
{
     const int size = 2;
     int array[size];
     return_array(array,size);
     return 0;
}
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
19.01.2010, 14:37  [ТС]     написать функцию, возвращающую массив #6
Цитата Сообщение от CheshireCat Посмотреть сообщение
Ну а в чем проблема-то?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct my_pair
{
    int first;
    int second;
};
 
my_pair my_super_func( тут параметры.... )
{
    //..........
    my_pair p;
    p.first = 0;
    p.second = 100;
    return p;
}

не хочу морочиться с first и second, в моем случае это усложнит код (поэтому и std:air е хочу использовать). Хочу, чтобы там, где я потом использую arr можно было вызывать arr[screen] где screen = 0 или screen = 1. Но спасибо за ответ
CheshireCat
Эксперт С++
2890 / 1239 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
19.01.2010, 14:37     написать функцию, возвращающую массив #7
А кстати, уточни язык - C или C++ ?
Rififi
2336 / 1051 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
19.01.2010, 14:38     написать функцию, возвращающую массив #8
Etudiante,

нужно написать функцию, которая возвращает массив из двух чисел, и я не хочу использовать

Массив вернуть нельзя.

можно вернуть ссылку на массив

C++
1
2
3
4
5
int (&f())[2]
{
    static int arr[2];
    return arr;
}
CheshireCat
Эксперт С++
2890 / 1239 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
19.01.2010, 14:40     написать функцию, возвращающую массив #9
Ха, делов-то - вернуть массив!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct my_struct
{
    int a[100];
};
 
my_struct my_super_func( тут параметры.... )
{
    //..........
    my_struct p;
    p.a[0] = 0;
    //....
    p.a[99] = 99;
    return p;
}
 
int main()
{
    my_struct s = my_super_func();
    printf("%d - %d\n", s.a[0], s.a[99]);
    return 0;
}
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
19.01.2010, 15:51  [ТС]     написать функцию, возвращающую массив #10
Цитата Сообщение от CheshireCat Посмотреть сообщение
А кстати, уточни язык - C или C++ ?
C++

Добавлено через 5 минут
Цитата Сообщение от Rififi Посмотреть сообщение
Etudiante,

нужно написать функцию, которая возвращает массив из двух чисел, и я не хочу использовать

Массив вернуть нельзя.

можно вернуть ссылку на массив

C++
1
2
3
4
5
int (&f())[2]
{
    static int arr[2];
    return arr;
}
А если сделать так?

C++
1
2
3
4
5
6
int* return_array(){
 static int arr[2];
  arr[0] = 0;
  arr[1] = 0;
  return arr;
}
CheshireCat
Эксперт С++
2890 / 1239 / 78
Регистрация: 27.05.2008
Сообщений: 3,327
19.01.2010, 15:56     написать функцию, возвращающую массив #11
Можно, конечно же, и так. Но static не есть гуд в многопоточных приложениях.
В C++, кстати, проще всего вернуть из функции vector<int>.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2010, 16:08     написать функцию, возвращающую массив
Еще ссылки по теме:

C++ Написать функцию, возвращающую количество своих вызовов
C++ Написать функцию возвращающую ответ вычисления факториала
C++ Написать функцию, возвращающую среднее арифметическое положительных элементов
Написать функцию, возвращающую сумму элементов массива C++
C++ Написать функцию, возвращающую количество одинаковых элементов в списке

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

Или воспользуйтесь поиском по форуму:
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
19.01.2010, 16:08  [ТС]     написать функцию, возвращающую массив #12
Цитата Сообщение от CheshireCat Посмотреть сообщение
Можно, конечно же, и так. Но static не есть гуд в многопоточных приложениях.
В C++, кстати, проще всего вернуть из функции vector<int>.

я думаю оставить версию с void как самую простую. В ней же нет подвохов? Вектор использовать можно конечно же. Только как-то не хочеться объявлять вектор ради одной малюсенькой функции которая вызывается два раза. Хотя в общем случае, вектор, наверное, лучшее решение?
Yandex
Объявления
19.01.2010, 16:08     написать функцию, возвращающую массив
Ответ Создать тему
Опции темы

Текущее время: 20:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru