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

Сжать массив отбрасыванием нулевых элементов - C++

Восстановить пароль Регистрация
 
blak
9 / 9 / 0
Регистрация: 05.09.2010
Сообщений: 195
04.04.2011, 20:00     Сжать массив отбрасыванием нулевых элементов #1
помогите пожалуйста создать динамический массив и Сжать заданный массив b1, b2,...,bm отбрасыванием нулевых элементов!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2011, 20:00     Сжать массив отбрасыванием нулевых элементов
Посмотрите здесь:

Сожмите заданный массив A(N) отбрасыванием нулевых элементов C++
Массив: С помощью рекурсии определить количество нулевых элементов. C++
C++ Массивы. Задан массив,содержащий несколько нулевых элементов. Сжать его выбросив эти элементы.
C++ Массив (Найти количество нулевых элементов)
C++ С++ Программа на Одномерный массив (вывести кол-во нулевых элементов)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
04.04.2011, 21:21     Сжать массив отбрасыванием нулевых элементов #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
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
    srand( ( unsigned ) time ( NULL ) );
    int arrSize, tempSize, i, j, zeroCount = 0;
    int * mass, * temp;
    printf( "Input size of array: ");
    scanf( "%d", &tempSize );
    temp = ( int * ) malloc ( tempSize * sizeof( int ) );
    printf( "Array befour: ");
    for ( i = 0; i < tempSize; ++i ){
        temp[ i ] = rand() % 10;
        if( temp[ i ] == 0 )
            zeroCount++;
        printf( "%d ", temp[ i ] );
    }
 
    arrSize = tempSize - zeroCount;
 
    if ( arrSize != tempSize ){
        printf( "\n\nArray after:  ");
        mass = ( int * ) malloc ( arrSize * sizeof( int ) );
        for ( i = 0, j = 0; i < tempSize; ++i ){
            if ( temp[ i ] ){
                mass[ j ] = temp[ i ];
                ++j;
            }
        }
 
        for ( i = 0; i < arrSize; ++i ){
            printf( "%d ", mass[ i ] );
        }
        free( mass );
    }
    else
        printf( "\nArray does not have zero element\n\n" );
 
    free( temp );
    return 0;
}
blak
9 / 9 / 0
Регистрация: 05.09.2010
Сообщений: 195
04.04.2011, 21:32  [ТС]     Сжать массив отбрасыванием нулевых элементов #3
спасибо большое!а не скажите как сделать то же самое только в обычном одномерном массиве?
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
04.04.2011, 22:06     Сжать массив отбрасыванием нулевых элементов #4
в смысле в обычном? не динамическом?
blak
9 / 9 / 0
Регистрация: 05.09.2010
Сообщений: 195
04.04.2011, 22:14  [ТС]     Сжать массив отбрасыванием нулевых элементов #5
да в обычном!если можно
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
04.04.2011, 22:32     Сжать массив отбрасыванием нулевых элементов #6
это уже будет не сжатие массива, ну вообщем создай 2 одинковых по размеру массива и во второй не записвывай 0 значения циклом
C
1
2
3
4
5
6
    for ( i = 0, j = 0; i < tempSize; ++i ){
            if ( temp[ i ] ){
                mass[ j ] = temp[ i ];
                ++j;
         }
        }
затем в конец можно записать -1, вот как-то так
C
1
2
3
   for ( j; j < tempSize; ++j){
            mass[ j ] = -1;
        }
и выводить второй массив с условием, что элемент >= 0.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2011, 23:19     Сжать массив отбрасыванием нулевых элементов
Еще ссылки по теме:

Массивы. Вычислить максимальный элемент массива, сумму элементов, сжать массив C++
C++ Массив. Посчитать, сколько отрицательных,положительных, и нулевых элементов
C++ Сжать массив путем вычеркивания нулевых элементов

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

Или воспользуйтесь поиском по форуму:
blak
9 / 9 / 0
Регистрация: 05.09.2010
Сообщений: 195
04.04.2011, 23:19  [ТС]     Сжать массив отбрасыванием нулевых элементов #7
а без tempSize можно?
Yandex
Объявления
04.04.2011, 23:19     Сжать массив отбрасыванием нулевых элементов
Ответ Создать тему
Опции темы

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