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

Удалить все нечетные элементы массива - C++

Восстановить пароль Регистрация
 
Софико
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 14
29.10.2013, 18:56     Удалить все нечетные элементы массива #1
Очень прошу проверьте на явность ошибок и на компиляторе задание: "Удалить все нечетные элементы". Правильно ли?

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
#include <iostream.h>
#include <conio.h>
#include <string>
#include <stdlib.h>
#include <algorithm>
 
void main()
{
int i,n,x, a[100],b[100];
int length=0;
n=3;
for (i=0; i<n; i++)
{
cin>>a[i];
}
for (i=0; i<n; i++)
{
cin>>b[i];
}
for (i=0; i<n; i++)
{
if (a[i]%2!=0!=b[i]%2!=0) 
{
getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 206
Записей в блоге: 2
Завершенные тесты: 1
29.10.2013, 18:58     Удалить все нечетные элементы массива #2
int length=0;
Смысл в этом? Вместо всех n ты должен подставлять length.
Zig_Stas
8 / 8 / 1
Регистрация: 26.10.2013
Сообщений: 55
29.10.2013, 19:00     Удалить все нечетные элементы массива #3
Простите конечно, но как вы с циклом по i от 0 до 3 будете обрабатывать массивы из 100 элементов? Дайте, пожалуйста, полное условие задачи

Добавлено через 1 минуту


Да и библиотечек многовато лишних. Был бы преподавателем - не принял бы=)
Софико
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 14
29.10.2013, 19:08  [ТС]     Удалить все нечетные элементы массива #4
такое и есть задание "Удалить все нечетные элементы"
Zig_Stas
8 / 8 / 1
Регистрация: 26.10.2013
Сообщений: 55
29.10.2013, 19:13     Удалить все нечетные элементы массива #5
Цитата Сообщение от Софико Посмотреть сообщение
такое и есть задание "Удалить все нечетные элементы"
Удалить все нечетные элементы из 2-х массивов? В Вашей программе отсутствует удаление в принципе.
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 206
Записей в блоге: 2
Завершенные тесты: 1
29.10.2013, 20:03     Удалить все нечетные элементы массива #6
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int i, length, blen=0,  a[100], b[100];
    setlocale(0,"");
 
    cout << "Введите размер массива" << endl;
    cin >> length;  //ввод длины массива
 
    cout << "Введите массив" << endl;
    for (i=0; i<length; i++)
        cin>>a[i];      // ввод массива
 
    for (i=0; i < length; i++)
        if (a[i]%2!=0)
        {
            b[blen]=a[i];
            blen++;
        }
    cout << "a[i]= ";
    for (i=0; i<length; i++)
        cout << a[i] << " ";
 
    cout << endl;
 
    cout << "b[i]= ";
    for (i=0; i<blen; i++)
        cout << b[i]<< " ";
            
    _getch();
    return 0;
}
Это без защиты программа.

Добавлено через 13 минут
А это с минимальной защитой:
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int i=0, length, blen=0,  a[100], b[100];
    setlocale(0,"");
 
    cout << "Введите размер массива" << endl;
    cin >> length;  //ввод длины массива
    
    if(100<=length)
    {
        cout << "Пересмотри свою ориентацию" << endl;
        return -1;
    }
    else
    {
        cout << "Введите массив" << endl;
        for (i=0; i<length; i++)
            cin>>a[i];      // ввод массива
 
        for (i=0; i < length; i++)
            if (a[i]%2!=0)
            {
                b[blen]=a[i];
                blen++;
            }
        cout << "a[i]= ";
        for (i=0; i<length; i++)
            cout << a[i] << " ";
 
        cout << endl;
 
        cout << "b[i]= ";
        for (i=0; i<blen; i++)
            cout << b[i]<< " ";
    }   
    _getch();
    return 0;
}
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
29.10.2013, 21:30     Удалить все нечетные элементы массива #7
Вот скрин.Правильно работает?
Миниатюры
Удалить все нечетные элементы массива  
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
29.10.2013, 21:33     Удалить все нечетные элементы массива #8
Работает правильно. Но если списано по примеру выше, то не правильно
Там не удаление элементов, а переписывание их в другой массив ...
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
29.10.2013, 21:41     Удалить все нечетные элементы массива #9
Цитата Сообщение от Leshak Посмотреть сообщение
Там не удаление элементов, а переписывание их в другой массив ...
Именно это я и имел ввиду,что здесь переписываются элементы,а не удаляется.
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 206
Записей в блоге: 2
Завершенные тесты: 1
30.10.2013, 12:24     Удалить все нечетные элементы массива #10
Цитата Сообщение от Leshak Посмотреть сообщение
Работает правильно. Но если списано по примеру выше, то не правильно
Там не удаление элементов, а переписывание их в другой массив ...
А как ты себе представляешь удаление? Судя по условию,требуется реализовать статический массив. Удаление как таковое возможно в динамических массивах.Конечно,в целях защиты,лучше было и использовать дин.массив либо вектор...
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
30.10.2013, 19:45     Удалить все нечетные элементы массива #11
Цитата Сообщение от Matan! Посмотреть сообщение
А как ты себе представляешь удаление? Судя по условию,требуется реализовать статический массив. Удаление как таковое возможно в динамических массивах.Конечно,в целях защиты,лучше было и использовать дин.массив либо вектор...
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 206
Записей в блоге: 2
Завершенные тесты: 1
31.10.2013, 00:43     Удалить все нечетные элементы массива #12
Цитата Сообщение от Leshak Посмотреть сообщение
Что мда?Говори уже,раз начал
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
31.10.2013, 10:04     Удалить все нечетные элементы массива #13
Ну, дело в том что есть ещё такое понятие как сдвиговый массив. Как раз для данного статического массива. То есть по сути мы его не удаляем, мы индексы просто уплотняем. Элементы в памяти остаются, и да, согласен что динамика была бы лучше. Но, я не видел в условии что там нужен конкретно динамический массив, и удаление в данном случае точно не ассоциируется с копированием
П.с. погугли по тому же паскалю и посмотри на реализацию к примеру(навожу в нужное русло ). Так что дерзай.
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 206
Записей в блоге: 2
Завершенные тесты: 1
31.10.2013, 21:12     Удалить все нечетные элементы массива #14
Цитата Сообщение от Leshak Посмотреть сообщение
Ну, дело в том что есть ещё такое понятие как сдвиговый массив.
Сам придумал?
Цитата Сообщение от Leshak Посмотреть сообщение
То есть по сути мы его не удаляем, мы индексы просто уплотняем. Элементы в памяти остаются
Зачем тебе уплотнять,если элементы надо удалять?Если ты про циклический сдвиг в массивах,то он здесь явно не решает всех задачи.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 00:02     Удалить все нечетные элементы массива
Еще ссылки по теме:

Найти максимальный элемент массива, и удалить после него все нечетные элементы C++
Удалить все нечетные элементы одномерного массива C++
Поставить в начало массива все четные элементы, а конец – все нечетные C++

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

Или воспользуйтесь поиском по форуму:
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
01.11.2013, 00:02     Удалить все нечетные элементы массива #15
Как только попадается такое задание "Удалить все нечетные элементы" сразу начинаются споры.Но задания есть и примеров достаточно много.Я так понимаю, удалить из статического массива элементы нельзя,а сделать "невидимками" можно.Вот один из подобных примеров.

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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int N = 10;
 
void Init(int *a,const int n)
{
   for(int i = 0; i < n; ++i)
      a[i] =1+ rand() % 10;
}
void Print(int *a,const int n)
{
   for(int i = 0; i < n; ++i)
      cout << a[i] << " ";
      cout << endl;
}
void Otsev(int *a, int &n)
{
   int j=0;
   for(int i = 0; i < n; ++i)
      if (a[i] %2 == 0)
          a[j++] = a[i];
          n = j;
}
int main()
{
   int a[N], n = N;
   srand(time(NULL));
   Init(a, N);
   Print(a, N);
   Otsev(a, n);
   Print(a, n);
   return 0;
}
Yandex
Объявления
01.11.2013, 00:02     Удалить все нечетные элементы массива
Ответ Создать тему
Опции темы

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