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

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

Восстановить пароль Регистрация
 
 
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 154
28.04.2014, 20:37     Вернуть все четные числа массива в виде нового массива #1
Функция должна вернуть все четные числа массива в виде нового массива.

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;
    
}
Подскажите, в чем ошибка.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2014, 20:37     Вернуть все четные числа массива в виде нового массива
Посмотрите здесь:

Вывести все четные и нечетные числа массива C++
Из массива JJ(100) в массив NN(100) перенести числа (элементы массива) сначала нечетные, а затем четные. C++
C++ Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные
Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные C++
C++ Удалить из массива все четные числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.04.2014, 22:24     Вернуть все четные числа массива в виде нового массива #21
Цитата Сообщение от luigration Посмотреть сообщение
Что именно передавать по ссылке? Вернее где ее передавать?
ну тот j который у вас глобальный, нужно объявить в мейне, и передать в функцию по ссылке. Все изменения которые с ним произойдут внутри функцию, будут и вне ее.
чтобы передать значение по ссылке
C++
1
int *f2 (int *mas,int N, int &j)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 154
28.04.2014, 22:29  [ТС]     Вернуть все четные числа массива в виде нового массива #22
Цитата Сообщение от alekopoko Посмотреть сообщение
cooller, ну с точки зрения затрат памяти или с точки зрения - что где-то там случайно совпадут индентификаторы и я не замечу, то да. Но программа мизерная,так что разницы нет.
Ну если я правильно понимаю, то ты намекаешь что это плохой стиль программирования) да) не спорю)
Можно же не делать j глобальной, а просто определить размерность получившегося массива?
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 22:29     Вернуть все четные числа массива в виде нового массива #23
luigration, значит берешь и открываешь учебник) там тебе и будет самое подробное объяснение=))
ссылка - оператор &
изменяется внешний объект(j) с помощью локальной переменой (c)
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
#include <iostream>
using namespace std;
int *f2 (int *mas,int N,[U]int &c[/U])
{
    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[c] = mas[i];
            c++;
        }
    }  
    return even;    
}
 void main()
 {
    int a[]={1,2,3,4,5,6,7,8,9,10};
    int *b;
    int j=0;
    b=f2(a,10,j);
    for(int i=0;i<j;i++)
    printf("%d\n",b[i]);
 }
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 154
28.04.2014, 22:30  [ТС]     Вернуть все четные числа массива в виде нового массива #24
Цитата Сообщение от cooller Посмотреть сообщение
ну тот j который у вас глобальный, нужно объявить в мейне, и передать в функцию по ссылке. Все изменения которые с ним произойдут внутри функцию, будут и вне ее.
чтобы передать значение по ссылке
C++
1
int *f2 (int *mas,int N, int &j)
Да, при передаче копии адреса аргументы тоже меняются, я понимаю. Хорошо, посмотрю. Спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 22:33     Вернуть все четные числа массива в виде нового массива
Еще ссылки по теме:

C++ Не нарушая порядка следования нужно расположить в начале массива все четные числа а затем нечетные
Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания C++
Поставить в начало массива все четные элементы, а конец – все нечетные C++

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

Или воспользуйтесь поиском по форуму:
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 22:33     Вернуть все четные числа массива в виде нового массива #25
с можешь заменить на j
но j в mainе и j в функции разные переменные
опять же почитай про локальные(автоматические) глобальные статические переменные
Yandex
Объявления
28.04.2014, 22:33     Вернуть все четные числа массива в виде нового массива
Ответ Создать тему
Опции темы

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