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

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

Войти
Регистрация
Восстановить пароль
 
 
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 159
#1

Вернуть все четные числа массива в виде нового массива - C++

28.04.2014, 20:37. Просмотров 616. Ответов 24
Метки нет (Все метки)

Функция должна вернуть все четные числа массива в виде нового массива.

C++ (Qt)
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
int *f2 (int *mas,int N)
{
    int size=0;
 
    for(int i=0; i<N; i++)
    {
        if(mas[i]%2==0)
        {
            size++;
        }
    }
 
    int *even = new int [size];
 
    
    int j=0;
    for(int i(0); i<N; i++)
    {
        if(mas[i]%2==0)
        {
            even[j] = mas[i];
            j++;
        }
    }
    
    return even;
    delete []even;
    
}
Подскажите, в чем ошибка.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2014, 20:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вернуть все четные числа массива в виде нового массива (C++):

Удалить из массива все четные числа - C++
Удалить из массива все четные числа не используя вспомогательный массив. int b; int i,j=0; for(i=0;i&lt;n;i++) ...

Вывести все четные и нечетные числа массива - C++
Здравствуйте!!! У меня есть такое задание не могу решать может поможете?? 1. Надо заполнить все дни января(31 день), в которых был...

Удалить из массива целых чисел все нули. Сформировать два новых массива. В первый массив переписать все четные - C++
Помогите сделать данную программу: Удалить из массива целых чисел все нули. Сформировать два новых массива. В первый массив переписать...

Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные - C++
Помогите, пожалуйста. &gt;&gt;&quot;Дан одномерный массив А, состоящий из N элементов. Сколько значений элементов встречается в массиве по 3...

Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные - C++
Помогите, пожалуйста. &gt;&gt;&quot;Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец...

Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания - C++
Дан целочисленный массив размера N.Вывести в начале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а...

24
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,364
Завершенные тесты: 1
28.04.2014, 20:40 #2
Цитата Сообщение от luigration Посмотреть сообщение
delete []even;
Писать не надо, хотя все равно эта строчка не выполняется,
т.к. стоит после return
0
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 20:44 #3
delete не выполняется,выход происходит раньше,return even;
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 159
28.04.2014, 21:00  [ТС] #4
Цитата Сообщение от alekopoko Посмотреть сообщение
delete не выполняется,выход происходит раньше,return even;
Это понятно. Эта строчка случайно сюда попала. Что с delete, что без - все равно не работает.
0
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 21:03 #5
luigration, зачем тебе указатель на функцию?
может так?
Код
int f2 (int *mas,int N)
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 159
28.04.2014, 21:12  [ТС] #6
Цитата Сообщение от alekopoko Посмотреть сообщение
luigration, зачем тебе указатель на функцию?
может так?
Код
int f2 (int *mas,int N)
Так то же самое будет..
Мне казалось, что если функция должна возвращать указатель или массив, то нужно писать со свездой, разве нет? Если убрать звезду, то функция не сможет вернуть массив.
Указатели на функцию объявляются по-другому..
C++ (Qt)
1
int(*p)(int)=&f2;
0
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.04.2014, 21:15 #7
Цитата Сообщение от alekopoko Посмотреть сообщение
зачем тебе указатель на функцию?
а где ты увидел там указатель на функцию?

Добавлено через 2 минуты
luigration, мне интересно, а как ты выводишь потом этот массив?
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 159
28.04.2014, 21:19  [ТС] #8
Цитата Сообщение от cooller Посмотреть сообщение
а где ты увидел там указатель на функцию?

Добавлено через 2 минуты
luigration, мне интересно, а как ты выводишь потом этот массив?
Я в главной функции пишу
C++ (Qt)
1
cout << f2(mas,n);
И мне кажется, делаю совершенно неправильно.
0
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 21:19 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
cooller,
а где ты увидел там указатель на функцию?
забыл прототипизацию указателя на функцию) int (*f2) (int *mas,int N);

luigration,
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
#include <iostream>
 int j=0;
using namespace std;
 int *f2 (int *mas,int N)
{
    int size=0;
 
    for(int i=0; i<N; i++)
    {
        if(mas[i]%2==0)
        {
            size++;
        }
    }
 
    int *even = new int [size];
    for(int i(0); i<N; i++)
    {
        if(mas[i]%2==0)
        {
            even[j] = mas[i];
            j++;
        }
    }
    
    return even;
    
}
 void main()
 {
    int a[]={1,2,3,4,5,6,7,8,9,10};
    int *b;
    b=f2(a,10);
    for(int i=0;i<j;i++)
    printf("%d\n",b[i]);
 }
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 159
28.04.2014, 21:24  [ТС] #10
То есть в главной функции мне нужно было создать еще один массив, так?
И почему j - глобальная переменная?
0
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.04.2014, 21:25 #11
Цитата Сообщение от luigration Посмотреть сообщение
И мне кажется, делаю совершенно неправильно.
массив нужно выводить в цикле, а для этого нужно знать его размер
так что ты должен вернуть из цикла и размер тоже, либо использовать std::vector
0
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 21:25 #12
luigration,
Так то же самое будет..
Мне казалось, что если функция должна возвращать указатель или массив, то нужно писать со свездой, разве нет? Если убрать звезду, то функция не сможет вернуть массив.
Указатели на функцию объявляются по-другому..
Код C++ (QT)
1
int(*p)(int)=&f2;
все правильно говоришь да) это я накосячил)
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 159
28.04.2014, 21:26  [ТС] #13
Цитата Сообщение от cooller Посмотреть сообщение
массив нужно выводить в цикле, а для этого нужно знать его размер
так что ты должен вернуть из цикла и размер тоже, либо использовать std::vector
Вектором пользоваться не умею. Пока что.
0
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 21:27 #14
luigration,
И почему j - глобальная переменная?
это переменная определяет сколько элементов выводить в Main
ну можно по-разному это все реализовать
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 159
28.04.2014, 21:29  [ТС] #15
Цитата Сообщение от alekopoko Посмотреть сообщение
luigration,
это переменная определяет сколько элементов выводить в Main
ну можно по-разному это все реализовать
Не работает все равно..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 21:29
Привет! Вот еще темы с ответами:

Не нарушая порядка следования нужно расположить в начале массива все четные числа а затем нечетные - C++
Помогите пожалуйста с написанием программы. Не нарушая порядка следования нужно расположить в начале массива все четные числа а затем...

Из массива JJ(100) в массив NN(100) перенести числа (элементы массива) сначала нечетные, а затем четные. - C++
Из массива JJ(100) в массив NN(100) перенести числа (элементы массива) сначала нечетные, а затем четные. Вывести массив NN на печать по 10...

Поставить в начало массива все четные элементы, а конец – все нечетные - C++
Всем доброго времени суток.Помогите написать процедуру, которая ставит в начало массива все четные элементы, а конец – все нечетные.

Удалить из массива все четные элементы - C++
дан массив int a. удалить из массива все четные элементы


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
28.04.2014, 21:29
Ответ Создать тему
Опции темы

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