1 / 1 / 0
Регистрация: 27.10.2017
Сообщений: 91
1

Задан массив x натуральных чисел из 20 элементов. Удалить из него элементы, являющиеся удвоенными нечетными числами

02.05.2018, 17:18. Показов 1424. Ответов 5
Метки нет (Все метки)

Сделал вот такую программу:
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
37
38
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL,"rus");
    int x[20],N = 20;
    for(int i = 0;i<N;i++)
    {
        cout<<"Введите "<<i+1<<" элемент"<<endl;
        cin >>x[i];
    }
    for(int i = 0;i<N;i++)
    {
        cout<<x[i]<<((((i+1) % 5) == 0) ? "\n" : " ");
        //if(i+1 % 5 == 0) cout<<endl;
    }
    cout<<endl;
    cout<<endl;
    for(int i = 0;i<N;i++)
    {
       if(x[i] % 2 = 0)
       {
           if(i != 19)
           {
           x[i] = x[i+1];
           N--;
           }
           else
            N--;
       }
    }
    for(int i = 0;i<N;i++)
    {
        cout<<x[i]<<((((i+1) % 5) == 0) ? "\n" : " ");
    }
    system("pause");
    return 0;
}
Удаляю элементы следующим образом, присваиваю x[i] = x[i+1], а от счетчика вывода массива (N) отнимаю -1, но проблема в том, что x[i+1] может быть тоже четным... Подскажите, как грамотно исправить можно?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2018, 17:18
Ответы с готовыми решениями:

Задан массив с количеством элементов N. Вывести элементы с нечетными номерами, являющиеся нечетными
Где ошибка program ffwrewre4; uses crt; const n=20; var a:array of integer; i,m:integer;...

Задан массив с количеством элементов N. Вывести элементы с нечетными номерами, являющиеся нечетными
Задан массив с количеством элементов N. Вывести элементы с нечетными номерами, являющиеся нечетными.

Задан массив натуральных чисел X из 20 элементов. Удалить из него 2 наибольших и наименьших элемента.
Задан массив натуральных чисел X из 20 элементов. Удалить из него 2 наибольших и наименьших...

Найти члены последовательности, являющиеся удвоенными нечетными числами
6. Даны натуральные числа n, a1,…,an, где n≤1500. Найти члены ak последовательности a1,…,an,...

5
7422 / 5017 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
03.05.2018, 03:56 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
33
34
#include <iostream>
using namespace std;
 
int main()
{    
    int n = 20, k=0, m=0;
    int*a = new int[n];
 
    cout <<"Enter "<<n<<" elements:\n"; 
    for (int i = 0; i < n; i++)      
    cin >>a[i];      
          
    for (int i = 0; i < n; i++)
    {
    if (a[i]%2!=0 || (a[i]%2==0 && a[i]/2%2==0)) k++;
    cout <<a[i]<<" ";
    }
    cout << endl;
    
    int*b = new int[k];
    
    for (int i = 0; i < n; i++)
    if (a[i]%2!=0 || (a[i]%2==0 && a[i]/2%2==0)) b[m++]=a[i];
    
    delete[]a;
    a=b;
    cout <<"New matrix:\n";
    for (int i = 0; i < k; i++)
    cout <<a[i]<<" ";
    cout << endl; 
    delete[]a;
system("pause");
return 0;
}
1
1 / 1 / 0
Регистрация: 27.10.2017
Сообщений: 91
03.05.2018, 22:22  [ТС] 3
Тут используется динамический массив?
0
7422 / 5017 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
03.05.2018, 22:56 4
Цитата Сообщение от BestInTheWorld Посмотреть сообщение
Тут используется динамический массив?
Скорее всего используется. И возможно даже не один.
1
1 / 1 / 0
Регистрация: 27.10.2017
Сообщений: 91
04.05.2018, 20:12  [ТС] 5
Решение хорошее... Но динамический массив использовать нельзя(
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL,"rus");
    int x[20],N = 20;
    for(int i = 0;i<N;i++)
    {
        cout<<"Введите "<<i+1<<" элемент"<<endl;
        cin >>x[i];
    }
    for(int i = 0;i<N;i++)
    {
        cout<<x[i]<<((((i+1) % 5) == 0) ? "\n" : " ");
        //if(i+1 % 5 == 0) cout<<endl;
    }
    cout<<endl;
    cout<<endl;
    for(int i = 0;i<N; i++)
    {
       if(x[i] % 2 == 0)
       {
          // N--;
           if(i != 19)
           {
                int k = i;
               while(k < 19)
               {
                   k++;
                   N--;
                   if(x[k] % 2 != 0)
                   {
                       x[i] = x[k];
                       break;
                   }
 
               }
               //N--;
           }
          else
           {
               N--;
           }
       }
    }
    for(int i = 0;i<N;i++)
    {
        cout<<x[i]<<((((i+1) % 5) == 0) ? "\n" : " ");
    }
    system("pause");
    return 0;
}
Программа действитель удаляет все четные элементы но вывод, к сожалению, правильно не работает..
0
7422 / 5017 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
04.05.2018, 21:50 6
Лучший ответ Сообщение было отмечено BestInTheWorld как решение

Решение

Цитата Сообщение от BestInTheWorld Посмотреть сообщение
динамический массив использовать нельзя
это статический использовать нельзя. точнее использовать можно, но это будет не по стандарту С++, хотя работать будет (особенно учитывая что массив одномерный), но на некоторых компиляторах может выдавать ошибку или предупреждение.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2018, 21:50
Помогаю со студенческими работами здесь

Массив: Удалить из массива целых чисел все двузначные элементы,являющиеся простыми числами
Удалить из массива целых чисел все двузначные элементы,являющиеся простыми числами .Найти среднее...

Найти элементы массива, которые являются удвоенными нечетными числами
Ребят помогите пожалуйста, дали задание , но так уж вышло что в паскале я совсем ничего не...

Подсчитать, сколько чисел являются удвоенными нечетными числами
помогите пожалуйста срочно надо .Дана последовательность из 50 целых чисел. Подсчитать, сколько...

Определить количествово элементов, являющехся удвоенными нечетными числами
Задан массив чисел. Определить кол-во элементов, которые являются удвоенными нечетными числами. ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru