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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Wolandello
1 / 1 / 0
Регистрация: 06.06.2009
Сообщений: 35
#1

Удаления елементов из массива - C++

16.07.2009, 13:03. Просмотров 1386. Ответов 11
Метки нет (Все метки)

Народ есть такая задача: зделать массив из 50 случайных чисел из пормежутка А...В. Удалить из массива все його непарные елементы. Напечатать масив и вказать сколько елеметнов было удалено.
Можете подсказать как именно удалять елементы. Я так понимаю надо их зсувать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2009, 13:03     Удаления елементов из массива
Посмотрите здесь:

C++ Как выбрать 6 случайных елементов из массива
C++ Вычислить сумму елементов массива, индексы которых совпадают со значением елемента.
Количество елементов массива C++
Произведение елементов массива C++
C++ количество елементов массива
C++ Не получается. Умножение елементов массива на последний элемент
C++ Посчитать кол-во елементов массива и их сумму, который расположен в диапазоне от R1 до R2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
paradise@falls
1 / 1 / 0
Регистрация: 15.05.2009
Сообщений: 8
16.07.2009, 13:21     Удаления елементов из массива #2
Ну как я понимаю юзер вводит число А и Б,

1. Через random начинай брать числа, попутно проверяя если они между А и Б... Если да, то ложи в масив... Если нет, по бери след. число через random...

2. Теперь у нас есть масив с 50 числами. Тупо бегай через цикл по масиву и заменяй непарные эллементы на -1 например..

3. Когда печатаешь масив, то проверяй
C++
1
2
if(array[index] != -1)
   cout << array[index];
Тут же через какой нить каунтер считай колличество (-1)...

Это и есть кол. удаленных элементов...

Вроде все только написать осталось...
Wolandello
1 / 1 / 0
Регистрация: 06.06.2009
Сообщений: 35
16.07.2009, 13:28  [ТС]     Удаления елементов из массива #3
Спасибі чувак, а то я думав зсувати елементи масиву
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,615
16.07.2009, 13:28     Удаления елементов из массива #4
Цитата Сообщение от paradise@falls Посмотреть сообщение
Через random начинай брать числа, попутно проверяя если они между А и Б... Если да, то ложи в масив... Если нет, по бери след. число через random...
не обязательно проверять можно просто random сделать так что бы не проверято, точнее чтобы он брал именно числа из этого промежутка
Yurii_74
paladin
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
16.07.2009, 13:30     Удаления елементов из массива #5
Цитата Сообщение от paradise@falls Посмотреть сообщение
Ну как я понимаю юзер вводит число А и Б,

1. Через random начинай брать числа, попутно проверяя если они между А и Б... Если да, то ложи в масив... Если нет, по бери след. число через random...
небольшое дополнение:
можно сразу генерировать "правильные" числа: min(a,b) + rand(abs(a-b)+1);
Puporev
Модератор
51104 / 39035 / 12741
Регистрация: 18.05.2008
Сообщений: 88,813
16.07.2009, 13:33     Удаления елементов из массива #6
Удалить из массива все його непарные елементы. Напечатать масив и вказать сколько елеметнов было удалено.
Удалить элементы из массива, это значит произвести сдвиг массива столькот раз сколько нечетных элементов, а число сдвигов и будет число удаленных элементов. Замена элементов другими, не есть их удаление.

Добавлено через 58 секунд
Тем более предварительный их выбор, это скорее на шулерство похоже.
paradise@falls
1 / 1 / 0
Регистрация: 15.05.2009
Сообщений: 8
16.07.2009, 13:47     Удаления елементов из массива #7
Цитата Сообщение от mamedovvms Посмотреть сообщение
не обязательно проверять можно просто random сделать так что бы не проверято, точнее чтобы он брал именно числа из этого промежутка
Конечно можно, через %(B-A) например... и потом добавлять А к результату...
Я попроще написал...

Добавлено через 3 минуты 33 секунды
Цитата Сообщение от Puporev Посмотреть сообщение
Удалить элементы из массива, это значит произвести сдвиг массива столькот раз сколько нечетных элементов, а число сдвигов и будет число удаленных элементов. Замена элементов другими, не есть их удаление.

Добавлено через 58 секунд
Тем более предварительный их выбор, это скорее на шулерство похоже.
Можно так, но ИМХО каждый раз передвигать масив не совсем верно...

Можно после того как прошлишь по масиву переписать его в новый (без (-1)-ек)...
А потом удалить старый...
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,615
16.07.2009, 13:50     Удаления елементов из массива #8
Цитата Сообщение от paradise@falls Посмотреть сообщение
Можно после того как прошлишь по масиву переписать его в новый (без (-1)-ек)...
А потом удалить старый...
но можно тогда их даже и не заменять а просто проходить по новому массиву и смотреть есть ли там такой элемент, если есть то просто переходить к следующему , а если нет то записывать его в новый массив
Puporev
Модератор
51104 / 39035 / 12741
Регистрация: 18.05.2008
Сообщений: 88,813
16.07.2009, 13:56     Удаления елементов из массива #9
Дело в том что создать новый массив конечно проще, но в задании идет речь о преобразованиях в данном массиве. Это задача такая.
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,615
16.07.2009, 14:05     Удаления елементов из массива #10
Цитата Сообщение от Puporev Посмотреть сообщение
Дело в том что создать новый массив конечно проще, но в задании идет речь о преобразованиях в данном массиве. Это задача такая.
я совершенно согласен, а создание нового массива это как пойти в лес за грибами а набрать ягод
Puporev
Модератор
51104 / 39035 / 12741
Регистрация: 18.05.2008
Сообщений: 88,813
16.07.2009, 14:18     Удаления елементов из массива #11
Есть умельцы, которые решают эту задачу еще проще, просто сначала выводят на экран исходный массив, а затем только четные его элементы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2009, 15:35     Удаления елементов из массива
Еще ссылки по теме:

C++ нужно убрать однаковые елементы в списке(есть код програмы) только нехватает удаления однаковых елементов
Создать генератор чисел на основе массива из 3 елементов C++
C++ замена елементов одномерного массива
шаблон функции который принимает в параметры массив количиство елементов и должен найти сумму елементов массив C++
C++ Предусмотреть публичные методы добавления в конец массива, извлечения и удаления из массива по индексу

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

Или воспользуйтесь поиском по форуму:
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
16.07.2009, 15:35     Удаления елементов из массива #12
Wolandello, можно как
так
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
53
54
55
56
57
58
59
60
#include <iostream>
using namespace std;
#include <ctime>
#define  n 50
//////////////////////////////////////////////////////////////////////////
void out(int *ar);
void vin(int *ar,int a,int b);
void oper(int *ar);
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    setlocale(0,"");
    int ar[n],
        a,b;
    cout << "Введите нижнюю границу промежутка: ";
    wcin >> a;
    cout << "Введите верхнюю границу промежутка: ";
    wcin >> b;
    _flushall();
    srand(unsigned (time(0)));
    vin(ar,a,b);
    cout << "Массив:" << endl;
    out(ar);
    oper(ar);
    getchar();
    return 0;
}
//////////////////////////////////////////////////////////////////////////
void out(int *ar)
{
    for(int i = 0; i < n;i++)
    {
        cout.width(4);
        cout << ar[i];
    }
    cout << "\n\n";
}
//////////////////////////////////////////////////////////////////////////
void vin(int *ar,int a,int b)
{
    for(int i = 0; i < n;i++)
        ar[i] = a + rand()%(b - a + 1);
}
//////////////////////////////////////////////////////////////////////////
void oper(int *ar)
{
    int x = 0;
    for(int i = 0; i < n;i++)
    {
        if(ar[i]%2 == 0)
            ar[x++] = ar[i];
    }
    cout << "Массив после преобразования:" << endl;
    for(int i = 0; i < n-x;i++)
    {
        cout.width(4);
        cout << ar[i];
    }
    cout << endl;
}
Yandex
Объявления
16.07.2009, 15:35     Удаления елементов из массива
Ответ Создать тему
Опции темы

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