Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
алишка999
1 / 1 / 0
Регистрация: 01.09.2012
Сообщений: 30
1

Удалить из массива все четные элементы

08.09.2012, 17:08. Просмотров 3231. Ответов 6
Метки нет (Все метки)

дан массив int a[100]. удалить из массива все четные элементы
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 17:08
Ответы с готовыми решениями:

Удалить все четные элементы из массива
суть задания удалить все четные элементы из массива, программа делает все...

Удалить из массива все четные элементы
Как удалить из массива все четные элементы?

Из целочисленного массива Х все четные элементы записать в массив Y. Удалить в массивах максимальные элементы
Из целочисленного массива Х(N) все четные элементы записать в массив Y(k)....

Удалить из одномерного массива все четные элементы без изменения порядка
Написать программу используя функции, но не использовать указатели 2. Удалить...

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

6
BumerangSP
4290 / 1412 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.09.2012, 17:28 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <iostream>
#include <time.h>
using namespace std;
 
int main(void)
{
 int n=100,j=0;
 srand(time(NULL));
 int *a = new int [n];
 cout<<"Before: "<<endl;
 for (int i=0; i<100; i++)
 {
  a[i]=rand()%10;
  cout<<a[i]<<" ";
  if (a[i]&1)
    j++;
 }
  cout<<endl;
  cout<<"After: "<<endl;
  int *buf = new int [n-j];
  int k=0;
  for (int i=0; i<100; i++)
   if (a[i]%2!=0)
    {
     buf[k]=a[i];
     k++;
    } 
  for (int i=0; i<n-j; i++)
   cout<<buf[i]<<" "; 
  delete [] a,buf; 
  system("PAUSE");
}
1
David Sylva
1297 / 959 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
08.09.2012, 17:29 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <iostream> 
int main() 
{   
    
    unsigned int i, j;
    int array[100]; 
    int size = 100;
 
    for ( i = 0; i < 100; i++)  
    {
         array[i] = i + 1; 
         std::cout << array[i] << " "; 
    }
 
    std::cout << std::endl << std::endl << std::endl; 
 
    for ( i = 0; i < size; i++) 
        for ( j = 0; j < size; j++)  
            if(array[i] % 2 == 0) 
            { 
                array[i] = array[size - 1]; 
                size--; 
            }  
 
    for ( i = 0; i < size; i++) 
        std::cout << array[i] << " "; 
    std::cout << std::endl;
}
1
Thinker
Эксперт С++
4236 / 2210 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
08.09.2012, 17:55 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include <ctime>
const int N = 10;
 
int main()
{
   int i, a[N], n;
   srand(time(NULL));
   for(i = 0; i < N; i++)
      std::cout << (a[i] = rand()%100) << " ";
   std::cout << std::endl;
   for(i = n = 0; i < N; i++)
      if (a[i] & 1)
         std::cout << (a[n++] = a[i]) << " ";
   return 0;
}
1
Pavlin234
-41 / 31 / 21
Регистрация: 12.03.2017
Сообщений: 518
Завершенные тесты: 1
19.03.2017, 17:46 5
Эти 3 задачи решены неверно! Я решил их проверить через компьютерный мозг, и он выдал 0 из 100%.
Раз эти задачи неверно решены, я решил, что нужно правильно написать программу! Через 10 минут я написал программу, которую, затем проверил через компьютерный мозг и он выдал 100% из 100%!
Вот решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include <ctime>
using namespace std;
int main()
{
    int i, a[1000], N, n;
    cin >> N;
    for (i = 0; i < N; i++)
        cin >> a[i];
        
    for (i = n = 0; i < N; i++) {
        if (a[i] & 1) {
            cout << (a[n++] = a[i]) << " ";
        }
    }
    if (n == 0)
        cout << "There are no elements" << endl;
    getchar();
    getchar();
    return 0;
}
Проверка 1.
входные данные
5
3 -9 6 -7 1
выходные данные
3 -9 -7 1
Проверка 2.
входные данные
11
4 6 4 -4 -3 4 -6 -6 -9 -9 1
выходные данные
-3 -9 -9 1
Проверка 3.
входные данные
31
-49512 97168 -81277 57126 39184 -32396 31803 32847 -98508 -95365 68417 -31613 -33218 -87675 -11709 -14320 -11641 -11613 96643 -68524 -92865 56196 -58003 -32305 -21266 -73742 2842 -494 -6914 70083 58888
выходные данные
-81277 31803 32847 -95365 68417 -31613 -87675 -11709 -11641 -11613 96643 -92865 -58003 -32305 70083
Их конечно больше, но я дал в среднем нормальное количество проверок! Последняя, конечно, тяжелей проверить!



P.S. Если вы довольны, то отметьте это решение верное, то есть является ответом на поставленную задачу, и нажмите на кнопку "+1 СПАСИБО"!!!
Если у вас есть вопросы и нужно решить задачки по С++, пишите мне, и я ,примерно, через 1-2 дня я постараюсь решить задачу или ответить на вопрос, который вы задали мне!
2
Culfo
4 / 2 / 2
Регистрация: 13.12.2018
Сообщений: 20
18.01.2019, 21:32 6
Добавлено через 2 минуты
Pavlin234, Если не сложно, то добавьте комментарии-объяснения к Вашему коду, пожалуйста.
0
jugu
29 / 27 / 2
Регистрация: 11.01.2019
Сообщений: 137
18.01.2019, 22:06 7
Считаю, что начинающие должны сразу привыкать к современному С++ и STL... По крайней мере, видеть, какой компактный код можно получить.
Вот пример функции, которая удаляет из динамического массива все четные элементы (массив представлен вектором, тип элементов - int, но при желании это всё легко обобщается на произвольный целочисленный тип и даже любой подходящий контейнер):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <vector>
#include <algorithm>
 
/* функция удаления четных элементов */
auto remove_all_even(std::vector<int> array) {
    return std::vector<int>{ std::begin(array), std::remove_if(std::begin(array), std::end(array), [](int ai) { return ai % 2 == 0; }) };
}
 
int main()
{
    /* тест 1: удалить часть элементов */
    std::vector<int> v1{ 1, 2, 3, 4, 5, 6, 7, 8 }, w1 = remove_all_even(v1);
    /* тест 2: удалить все элементы */
    std::vector<int> v2{ 2, 2, 4, 4, 6, 6, 8, 8 }, w2 = remove_all_even(v2);
    /* тест 3: не удалить ни одного элемента */
    std::vector<int> v3{ 1, 1, 3, 3, 5, 5, 7, 7 }, w3 = remove_all_even(v3);
 
    return 0; 
}
0
18.01.2019, 22:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2019, 22:06

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

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

Из массива удалить четные элементы
Здравствуйте. Всю жизнь программировал на Паскале и вдруг си++...помогите...


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

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

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