Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

19.01.2010, 14:14. Просмотров 1944. Ответов 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();
и безопасность обеспечить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2010, 14:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос написать функцию, возвращающую массив (C++):

Написать функцию принимающую массив и возвращающую указатель на динамический массив - C++
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...

Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив - C++
Не охота создавать лишнею тему извиняюсь заранее Вопрос такой Можете подсказать есть массив из прототипов функций или...

Написать функцию, возвращающую случайное число от 2 до 6 - C++
Покажите как будет выглядеть программа подставляющая числа от 2до6 (рандом) в формулу ПR(5 результатов) Добавлено через 6 минут ...

Написать функцию, возвращающую количество своих вызовов - C++
Всем привет))) Помогите написать программу, функция которой возвращает количество её вызовов)

Написать функцию, возвращающую квадрат переданного ей параметра - C++
Нужна помощь в написании кода. Очень горю.((

Написать функцию, возвращающую сумму элементов массива - C++
Разработайте функцию, в которую передается массив типа float, что возвращает сумму элементов этого массива.

11
Андрейка
421 / 225 / 27
Регистрация: 25.03.2009
Сообщений: 744
19.01.2010, 14:24 #2
массивы с помощью return massiv нелья делать. передавайте адрес первого элемента и количество элементов в массиве и работайте с ним в функции.
0
CheshireCat
Эксперт С++
2907 / 1256 / 81
Регистрация: 27.05.2008
Сообщений: 3,449
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;
}
0
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
19.01.2010, 14:34  [ТС] #4
Очень помогли очевидным ответом
как делать нельзя, я знаю. Вопрос был в том, как делать можно. Это ведь тема для начинающих, правда?
Я предлагаю "неправильный" способ "в лоб", и правильный (с void). Спрашиваю, как можно сделать еще. Вводить еще и длину массива привильно, но это немного усложняет код по сравнению с функцией void?
0
BornLeader
53 / 49 / 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;
}
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. Но спасибо за ответ
0
CheshireCat
Эксперт С++
2907 / 1256 / 81
Регистрация: 27.05.2008
Сообщений: 3,449
19.01.2010, 14:37 #7
А кстати, уточни язык - C или C++ ?
0
Rififi
2363 / 1056 / 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;
}
1
CheshireCat
Эксперт С++
2907 / 1256 / 81
Регистрация: 27.05.2008
Сообщений: 3,449
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;
}
2
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;
}
0
CheshireCat
Эксперт С++
2907 / 1256 / 81
Регистрация: 27.05.2008
Сообщений: 3,449
19.01.2010, 15:56 #11
Можно, конечно же, и так. Но static не есть гуд в многопоточных приложениях.
В C++, кстати, проще всего вернуть из функции vector<int>.
0
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
19.01.2010, 16:08  [ТС] #12
Цитата Сообщение от CheshireCat Посмотреть сообщение
Можно, конечно же, и так. Но static не есть гуд в многопоточных приложениях.
В C++, кстати, проще всего вернуть из функции vector<int>.

я думаю оставить версию с void как самую простую. В ней же нет подвохов? Вектор использовать можно конечно же. Только как-то не хочеться объявлять вектор ради одной малюсенькой функции которая вызывается два раза. Хотя в общем случае, вектор, наверное, лучшее решение?
0
19.01.2010, 16:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2010, 16:08
Привет! Вот еще темы с ответами:

Написать функцию, возвращающую индекс числа в массиве - C++
Здравствуйте, помогите пожалуйста решить задачу: создать функцию, которая принимает одномерный числовой массив и его длину, а также число...

Написать функцию, возвращающую количество цифр в строке. - C++
Написать функцию, возвращающую количество цифр в строке. С помощью нее определить в тексте слово с минимальным количеством цифр.

Написать функцию возвращающую ответ вычисления факториала - C++
Доброго времени суток. Нужно решить три задачки. Я с С++ сталкиваюсь только сейчас. 2)Написать функцию возвращающую ответ вычисления...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru