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

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

Войти
Регистрация
Восстановить пароль
 
 
Алена_Коваленко
Заблокирован
#1

Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5, вставить 1 - C++

20.02.2014, 00:34. Просмотров 1047. Ответов 23
Метки нет (Все метки)

Задание: Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5, вставить 1.

Нули из массива удалила, и теперь не знаю как вставлять 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//
#include <iostream>
#include <conio.h>
#include <ctime>
 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian" );
    int n,i,k,j;
    cout << "Введите кол-во элементов массива: ";
    cin >> n;
    int a[n];
    srand(time(NULL)|clock());
    for (i=0; i<n; i++)
        a[i]=0+rand()%15;
    cout << "Получен массив из  " << n << " элементов. Диапазон [0;15]";
    for (i=0; i<n; i++)
        cout << a[i]<< endl;
    cout << endl;
    k=n;
    
    for (i=0; i<n; i++)
    {if (a[i]==0)
       {k--;}
       else cout << a[i] << " \n";}          //массив без нулей
    cout << k<< endl;  
    
    
 /*  for (i=0; i<k; i++)
      { if (a[i]==5)
          
          
          
          }
         */
 
    _getch(); 
    return 0;
       
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2014, 00:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5, вставить 1 (C++):

Одномерные массивы: Удалить из массива нули и после каждого числа, оканчивающегося на 5, вставить 1 - C++
Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5, вставить 1.

Дан массив из n целых чисел. До и после каждого числа, кратного 7, вставить число, равное 5 - C++
через функцию Дан массив из n целых чисел. До и после каждого числа, кратного 7, вставить число, равное 5.

Дан массив из n целых чисел. До и после каждого числа, кратного 7, вставить число, равное 5 - C++
нужно сделать вставку в массив.

Дан массив из n целых чисел. До и после каждого числа, кратного 7, вставить число, равное 5 - C++
надо осуществлять в этом же массиве A, не знаю как это сделать.... using namespace std; void ShowArr(int *A,int N) { ...

Дан целочисленный массив, нужно исключить из него все нули - C++
Дан целочисленный массив, нужно исключить из него все нули. Если нулей нет-написать &quot;сжатие невозможно&quot;. Составить динамический массив и...

Дан символ С и строки S, S0. После каждого вхождения символа С в строку S вставить S0 - C++
Дан символ С и строки S, S0. После каждого вхождения символа С в строку S вставить S0.

23
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
20.02.2014, 01:53 #16
Алена_Коваленко, тоже нужен, но там можно схитрить и просто не напечатать их. Но массиве-то они всё равно висеть будут.
0
Алена_Коваленко
Заблокирован
20.02.2014, 01:57  [ТС] #17
Arkaniy, т.е. оставить в том виде который был сначала. Где элементы не удаляются и нет сдвига остальных элементов и нули просто не выводятся на печать?
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
20.02.2014, 02:12 #18
Ловите.
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
#include <conio.h>
#include <iostream>
#include <iomanip>
#include <time.h>
using namespace std;
int main()
{
    setlocale(0,"");
    srand(time(NULL));
    int *arr, *res;
    int n, s = 0;
    cout << "Введите размер массива: "; cin>>n;
    arr = new int[n];
    for (int i = 0; i < n; i++)
    {
        arr[i] = rand() % 16;
        cout << setw(2) << arr[i] << ' ';
        if (arr[i] % 10 == 5)
            s++;
        if (arr[i] == 0)
            s--;
    }
    cout << endl;
 
    res = new int[n+s];
    for (int i = 0, j = 0; i < n+s; i++)
    {
        if (arr[i] == 0)
            continue;
        res[j++] = arr[i];
        if (arr[i] % 10 == 5)
            res[j++] = 1;
    }
    delete[] arr;
    
    for (int i = 0; i < n+s; i++)
        cout << setw(2) << res[i] << ' ';
    delete[] res;
 
    _getch();
    return 0;
}
1
DrOffset
7313 / 4413 / 999
Регистрация: 30.01.2014
Сообщений: 7,247
20.02.2014, 02:14 #19
Цитата Сообщение от Алена_Коваленко Посмотреть сообщение
Arkaniy, т.е. оставить в том виде который был сначала. Где элементы не удаляются и нет сдвига остальных элементов и нули просто не выводятся на печать?
Если оставить как было, то вы когда сдавать будете надо знать:
Что массивы на стеке с неконстантным размером - расширение GCC.
Что у вас задача решается фактически через view с фильтрацией на ваш исходный массив.
Я бы вам зачел, если бы увидел, что вы убедительны в своих ответах и знаете почему оно работает так, а не иначе, даже если условие выполнено не так как должно было быть. Но преподы бывают разные (и с разной компетенцией), а я вообще не препод, поэтому смотрите сами
1
Алена_Коваленко
Заблокирован
20.02.2014, 11:10  [ТС] #20
Arkaniy, это указатель?
C++
1
int *arr, *res;
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
20.02.2014, 13:29 #21
Алена_Коваленко, Да.
И я ошибся в решении.
26 строка должна быть такая
C++
1
for (int i = 0, j = 0; i < n+s; i++)
0
Алена_Коваленко
Заблокирован
20.02.2014, 14:39  [ТС] #22
Arkaniy, в 26 строке? Там же так и написано?
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
20.02.2014, 15:11 #23
Алена_Коваленко, бессонная ночь дает о себе знать)
C++
1
for (int i = 0, j = 0; i < n; i++)
1
Алена_Коваленко
Заблокирован
20.02.2014, 18:00  [ТС] #24
Arkaniy, спасибо большое, теперь наконец-то все поняла
(отдельное спасибо за понятно написанный код, впервые разобралась в чих-то записях без проблем)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2014, 18:00
Привет! Вот еще темы с ответами:

Дан массив целых, отсортированный по возрастанию. Удалить из него дубликаты - C++
Дан массив целых, отсортированный по возрастанию. Удалить из него дубликаты.

Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив... - C++
помогите!!!((( дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько...

Вставить после каждого непростого числа его наибольший делитель - C++
Дан массив из N целых чисел, где N&lt;=16, каждое число в диапазоне от –32000 до 32000. Вставить в массиве после каждого непростого числа...

Вставить после каждого непростого числа его наибольший делитель - C++
Дан массив из N целых чисел, где N&lt;=16, каждое число в диапазоне от –32000 до 32000. Вставить после каждого непростого числа его...


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

Или воспользуйтесь поиском по форуму:
24
Yandex
Объявления
20.02.2014, 18:00
Ответ Создать тему
Опции темы

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