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

Сжать массив путём удаления нулей - C++

Восстановить пароль Регистрация
 
golovw
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 5
15.10.2012, 00:49     Сжать массив путём удаления нулей #1
Нужно написать программу которая сжимает массив путём удаления нулей (если они есть), не используя
вспомагательный массив. Буду очень благодарен!!!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Detweeted
1 / 1 / 0
Регистрация: 10.10.2012
Сообщений: 21
15.10.2012, 01:15     Сжать массив путём удаления нулей #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
#include <stdio.h>
#include <conio.h>
 
void main(void)
{
    const int N=1000;
    int i, j, z, k;
    char a[N]; //Наш массив
    char c;   //Вводимый с клавиатуры символ
    for (i=0; (c=getchar())!='\n' && i<N; i++)
        a[i]=c;  //Вводимые символы отправляются в массив
    for (j=0; j<i; j++)  //начинаем просматривать массив на нули
    {
        if (a[j]=='0')  
            {
                for (z=j; z<i-1; z++)  //Сдвиг на символ влево
                a[z]=a[z+1];
                --i;  //т.к. произошел сдвиг, длина массива уменьшилась на 1
                --j;  //Этот индекс уменьшаем на 1 на случай, если подряд идут несколько нулей
            }
    }
    for (k=0; k<i; k++) //печать массива уже без нулей
        printf("%c", a[k]);
    getch();
}
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
15.10.2012, 14:39     Сжать массив путём удаления нулей #3
массив какого типа требуется в задании? если несимвольный то предыдущее задание вам не подойдет
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
15.10.2012, 15:07     Сжать массив путём удаления нулей #4
golovw,

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>
 
using namespace std;
 
int main()
{
    int arr[] = {0, 1, 2, 4, 0, 6, 4, 0, 2, 4, 6, 8, 9, 7, 3, 0};
    const int N = sizeof(arr)/sizeof(arr[0]);
 
    cout << "Initialize array:\n";
    for (int i=0; i<N; ++i)
        cout << arr[i] << " ";
    cout << endl;
 
    int def = 0;
    for (int i=0; i<N; ++i)
    {
        if (!arr[i])
            ++def;
        else
            arr[i-def] = arr[i];
 
    }
 
    cout << "Array after processing:\n";
    for (int i=0; i<N-def; ++i)
        cout << arr[i] << " ";
    cout << endl;
 
    cin.get();
 
}
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
15.10.2012, 15:36     Сжать массив путём удаления нулей #5
C++
1
2
3
4
#include <algorithm>
//...
    std::remove(arr, arr + SizeArr, 0);
// ...
Yandex
Объявления
15.10.2012, 15:36     Сжать массив путём удаления нулей
Ответ Создать тему
Опции темы

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