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

Массив - C++

Восстановить пароль Регистрация
 
Garret192
 Аватар для Garret192
1 / 1 / 0
Регистрация: 21.10.2009
Сообщений: 84
20.01.2010, 20:25     Массив #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
#include<iostream.h>
#include<stdlib.h>
const int n=100;
int main()
{
 int a[n],n,i,temp;
 cout<<"Vvedi n ";
 cin>>n;
 cout<<"Vvedi elements of massive ";
 for(i=0;i<n;i++)
 cin>>a[i];
 for(i=0;i<n;i++)
  for(i=0;i<n;i++)
   {
    if(a[i]==0)
     for(i;i<n-1;i++)
      {
       temp=a[i];
       a[i]=a[i+1];
       a[i+1]=temp;
      }
 
   }
 for(i=0;i<n;i++)
  cout<<a[i]<<" ";
 system ("pause");
 return 0;
}
При одном нуле он работает,а при двух нет, переставляя один,а другой оставляет на месте.
Помогите...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2010, 20:25     Массив
Посмотрите здесь:

C++ Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W
C++ Задать массив вещественных чисел и вставить в исходный массив число
C++ задача записать в массив отрицательные элементы матрицы в массив и вывести их
Массив: Составить массив из двух исходных по заданному принципу заполнения C++
Сформировать массив А из четных элементов исходного массива, а массив В - из нечетных C++
Массив: Переписать элементы одномерного массива A, попадающие в интервал [2, 6], в массив B. C++
Заполнить массив строк из файла. Массив заполняется, но выводится не корректно C++
Как в массив скопировать массив, который заполнен через указатели C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
21.01.2010, 01:20     Массив #2
C++
1
2
3
4
5
for(i=0;i<n;i++)
  for(i=0;i<n;i++)
   {
    if(a[i]==0)
     for(i;i<n-1;i++)
Даже если это был бы ассемблер, то все равно не хватало бы строчек со смыслом
Assembler
1
2
push i
pop i
Как ты умудряешься в трех(!!!) вложенных циклах использовать только один индекс? Исправь и сделай 3 индекса
Андрейка
410 / 214 / 24
Регистрация: 25.03.2009
Сообщений: 716
21.01.2010, 01:58     Массив #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <functional>
#include <algorithm>
 
int main()
{
    int arr[] = {1,2,3,0,5,0,6,-5,-7};
 
    const size_t N = sizeof(arr) / sizeof(*arr);
    const int elem = 0;
 
    int *ptr = std::partition(arr, arr+N, std::bind2nd(std::not_equal_to <int> (), elem));
 
    std::copy(arr, ptr, std::ostream_iterator <int> (std::cout," "));
    std::copy(ptr, arr+N, std::ostream_iterator <int> (std::cout," "));
 
    return 0;
}
Yandex
Объявления
21.01.2010, 01:58     Массив
Ответ Создать тему
Опции темы

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