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

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

Войти
Регистрация
Восстановить пароль
 
Akaufo
13 / 0 / 0
Регистрация: 21.03.2009
Сообщений: 100
#1

Сжать массив - C++

07.01.2011, 13:32. Просмотров 489. Ответов 4
Метки нет (Все метки)

Задание: сжать массив, удалив из него вс енулевые элементы!
Вот мой первый вариант, он работает, но мне он не нравиться
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
#include <iostream.h>
using namespace std;
int main()
{
    int i, a[100], n;
    cout << "n= ";
    cin >> n; 
    cout << "Массив: ";
    for (i=0; i<n; i++)
        {
              cout << "a[" << i << "]=";
              cin >> a[i];
        };
    cout << "\n";
    for (i=0; i<n; i++)
        cout << a[i] << "  ";
    cout << "\n";
    int k=0;
    for (i=0; i<n; i++)
        if (a[i]!=0)
           {
                   a[k]=a[i];
                   k++;
           };
    for (i=0; i<k; i++)
        cout << a[i] << "  ";
    system("\npause");
    return 0;
}
вот второй вариант, но почему-то не работает, объясните на словах в чем ошибка!
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
#include <iostream.h>
using namespace std;
int main()
{
    int i, a[100], n;
    cout << "n= ";
    cin >> n; 
    cout <<" Массив: ";
    for (i=0; i<n; i++)
        {
              cout << "a[" << i << "]=";
              cin >> a[i];
        };
    cout << "\n";
    for (i=0; i<n; i++)
        cout << a[i] << "  ";
    cout << "\n";
    int k=0;
    for (i=0; i<n; i++)
        if (a[i]=0)
           k++;
        else
            a[i-k]=a[i];
        n-=k; 
    for (i=0; i<n; i++)
        cout << a[i] << "  ";
    system("\npause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2011, 13:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сжать массив (C++):

Сжать массив, выбросив из него отрицательные элементы - массив становится пустым - C++
Задачка такая: Разработать программу, обеспечивающую ввод с клавиатуры целых чисел и сохранение их в одномерном массиве. Ввод...

Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не превышает 1 - C++
Помогите пожалуйста написать программу: Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не...

Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не превышает 1 - C++
Помогите пожалуйста написать программу. Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не...

сжать массив - C++
помогите пожалуйста Сжать заданный массив b1, b2,...,bm отбрасыванием нулевых элементов!решить с и спользованием функций

Сжать массив - C++
Помогите пожалуйста! Задача: Сжать массив, удалив из него элементы, модуль которых не превышает единицу. Освободившиеся в конце массива...

Сжать и отсортировать массив - C++
Дан массив а (n). Переписать в массив b(n) только положительные элементы массива а, деленные на 3 (со сжатием, без пустых элементов...

4
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
07.01.2011, 13:47 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
void main()
{
    int *n = new int[6];
    for (size_t i = 0; i < 6; ++i)
        cin >> n[i];
    int *new_end = remove(n, n + 6, 0);
    n = (int*)realloc(n, sizeof(int) * (*new_end = distance(n, new_end)));
    copy(n, new_end, ostream_iterator<int>(cout, " ; "));
    _getch();
}
1
Genius Ignat
1237 / 775 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
07.01.2011, 13:47 #3
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
#include <iostream>
using namespace std; 
 
int main(){
 
 const int size = 10;
 
 int tsize = size ;
 
 int m[size] = {1 , 2 , 7 , 0 , 8 , 0 , 9 , 0 , 3 , 0 }; 
 int i(0),j(0); 
   
  for( i = 0 ; i < tsize ; i++ )
      if( m[i] == 0 ){
                tsize-=1;
        for( j = i ; j < tsize  ; j++ )
                   m[j] = m[j+1];      
         
          }
 
 for( i = 0 ; i < tsize ; i++ ) 
     cout<<m[i]<<' ';
 
 
 cout<<endl;
 
 system("pause");
 return 0;
}
вс енулевые элементы
нулевые правильно я понял.
1
Akaufo
13 / 0 / 0
Регистрация: 21.03.2009
Сообщений: 100
07.01.2011, 13:50  [ТС] #4
спасибо, блин я тупанул жестоко, вся ошибка заключалась в 20 строке))
Спасибо за помощь!
PS: я в с++ новичок, программирую 2 день)так что прошу прощения!
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
07.01.2011, 14:00 #5
Akaufo, да, бывает)) типичная ошибочка после перехода на С++ с какого-нибудь паскаля)
0
07.01.2011, 14:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2011, 14:00
Привет! Вот еще темы с ответами:

Сжать массив, выбросив нулевые элементы - C++
Добрый день, уважаемые мастера, прошу помочь решить две задачи. 1) Составить программу решения задачи на С ++, использовать процедуры...

Найти сумму элементов и сжать массив - C++
Условие в одномерном массиве, состоящем из n-действительных элементов, вычислить: 1) номер минимального по модулю элемента массива; ...

Сжать массив-как это сделать? - C++
Здравствуйте, у меня вот тут задание такое есть,не знаю как сделать. Задача: Сжать массив,удалив из него все элементы,модуль которых...

Сжать массив путём удаления нулей - C++
Нужно написать программу которая сжимает массив путём удаления нулей (если они есть), не используя вспомагательный массив. Буду очень...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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