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

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

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

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

28.04.2014, 20:37. Просмотров 656. Ответов 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
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 21:33 #16
luigration,
Не работает все равно..
почему это?печатается же 2 4 6 8 10
и это массив b
которому ты выделил нужный размер в функции f2
какая ошибка?
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 172
28.04.2014, 21:34  [ТС] #17
Цитата Сообщение от alekopoko Посмотреть сообщение
luigration,
почему это?печатается же 2 4 6 8 10
и это массив b
которому ты выделил нужный размер в функции f2
какая ошибка?
Все, понятно теперь. Все работает, пардон. Спасибо огромное!
0
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.04.2014, 21:36 #18
alekopoko, лучше не глобальной переменную делать, а передавать по ссылке
0
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 21:43 #19
cooller, ну с точки зрения затрат памяти или с точки зрения - что где-то там случайно совпадут индентификаторы и я не замечу, то да. Но программа мизерная,так что разницы нет.
Ну если я правильно понимаю, то ты намекаешь что это плохой стиль программирования) да) не спорю)
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 172
28.04.2014, 22:22  [ТС] #20
Цитата Сообщение от cooller Посмотреть сообщение
alekopoko, лучше не глобальной переменную делать, а передавать по ссылке
Что именно передавать по ссылке? Вернее где ее передавать?

Добавлено через 15 минут
Цитата Сообщение от alekopoko Посмотреть сообщение
cooller, ну с точки зрения затрат памяти или с точки зрения - что где-то там случайно совпадут индентификаторы и я не замечу, то да. Но программа мизерная,так что разницы нет.
Ну если я правильно понимаю, то ты намекаешь что это плохой стиль программирования) да) не спорю)
А как сделать без глобализации j?
0
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.04.2014, 22:24 #21
Цитата Сообщение от luigration Посмотреть сообщение
Что именно передавать по ссылке? Вернее где ее передавать?
ну тот j который у вас глобальный, нужно объявить в мейне, и передать в функцию по ссылке. Все изменения которые с ним произойдут внутри функцию, будут и вне ее.
чтобы передать значение по ссылке
C++
1
int *f2 (int *mas,int N, int &j)
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 172
28.04.2014, 22:29  [ТС] #22
Цитата Сообщение от alekopoko Посмотреть сообщение
cooller, ну с точки зрения затрат памяти или с точки зрения - что где-то там случайно совпадут индентификаторы и я не замечу, то да. Но программа мизерная,так что разницы нет.
Ну если я правильно понимаю, то ты намекаешь что это плохой стиль программирования) да) не спорю)
Можно же не делать j глобальной, а просто определить размерность получившегося массива?
0
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]);
 }
0
luigration
2 / 2 / 0
Регистрация: 04.01.2013
Сообщений: 172
28.04.2014, 22:30  [ТС] #24
Цитата Сообщение от cooller Посмотреть сообщение
ну тот j который у вас глобальный, нужно объявить в мейне, и передать в функцию по ссылке. Все изменения которые с ним произойдут внутри функцию, будут и вне ее.
чтобы передать значение по ссылке
C++
1
int *f2 (int *mas,int N, int &j)
Да, при передаче копии адреса аргументы тоже меняются, я понимаю. Хорошо, посмотрю. Спасибо
0
alekopoko
1 / 1 / 1
Регистрация: 28.04.2014
Сообщений: 33
28.04.2014, 22:33 #25
с можешь заменить на j
но j в mainе и j в функции разные переменные
опять же почитай про локальные(автоматические) глобальные статические переменные
0
28.04.2014, 22:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2014, 22:33
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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