Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
1

Поместить нулевые элементы в конец массива

23.11.2015, 00:39. Показов 2324. Ответов 4
Метки нет (Все метки)

Задача состоит в том, чтобы отсортировать массив: Пользователь задает массив N - размера, вводит N Элементов. А затем Сортировка массива. Нужно, чтобы все нули , если такие есть в массиве - оказались в конце массива, а все остальные числа оставались в том же порядке. Пример :

Дан массив [ 1 0 2 0 3]
Нужно получить [ 1 2 3 0 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int j;
    int a=0;
    int i;
    int pos;
    int mas[100];
    int N;
    do {
        cout << " Enter the number of Elements (2...100):  " ;
        cin >> N;
       } while ( N <=0 || N>100 );
    cout << "\n Vse pravilno, N= " << N << endl;
 
    cout << "\n";
 
    for ( int i=0; i<N ; i++)
    {
        cout << "Enter Element " << i << ": ";
        cin >> mas[i];
    }
    cout << "\n [" ;
    for (int i=0; i<N; i++)
    {
        cout << "   " << mas[i];
    }
    cout << "   ]";
    
 
    for ( int  i=0; i<N; i++)
    {
        pos=i;
        a=0;
            if ( mas[i]=0 )
            { 
                a=mas[i];
            }
            for ( j=i+1; j<N; j++)
            {
                if ( mas[j] > 0 || mas[j] <0 )
                {
                    pos = j;
                    a=mas[j];
                }
            }
            mas[pos]=mas[i];
            mas[i]=a;
    }
    cout << "\n\n";
    for ( i =0 ; i < N; i++)
    {
        cout << "   " << mas[i];
    }
    cout << endl;
 
    system("pause");
    return 0;
}
Добавлено через 7 часов 34 минуты
Аппп

Добавлено через 15 часов 0 минут
Аппппп
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2015, 00:39
Ответы с готовыми решениями:

Создать два новых массива, в один из которых поместить положительные элементы массива, а в другой отрицательные и нулевые элементы
Написать программу , которая вводит с клавиатуры массив из N вещественных чисел , создает два новых...

одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец массива in c++
одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало...

Переместить нулевые элементы в конец массива
Добрый день! Я уже к вам за помощью обращалась и вот пишу в очередной раз. Пишу код программы, но...

В каждой строке все элементы, не равные нулю, переписать в начало строки, а нулевые элементы – в конец массива
Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя...

4
Модератор
Эксперт С++
11482 / 9400 / 5649
Регистрация: 18.12.2011
Сообщений: 25,113
23.11.2015, 08:38 2
C++
1
2
3
4
5
6
7
8
int mas2[100]={0};
int j=0;
for(int i=0;i<N;i++)
  if(mas[i]!=0)
     mas2[j++]=mas[i];
// теперь, если хочется, можете скопировать mas2 в mas
//for(int i=0;i<N;i++)
//     mas[i]=mas2[i];
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
24.11.2015, 00:05  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    int a=0;
 
    for ( i=0; i < N ; i++)
        
            if ( mas[i] =0)
            {
                for ( j=i+1; j< N-1; j++)
                    if ( mas[j] !=0 )
                    {
                        a=mas[i];
                        mas[j]=mas[i];
                        mas[j]=a;
                    }
            }
Помогите с этим циклом, хочу его добить как-нибудь... Пост выше не помог, просто туплю наверное


Может я вывод на экран массива не так делаю и показывает мне другой массив ? Как вывести потом результат на экран ? Я делаю так :

C++
1
2
3
4
for ( i =0 ; i < N; i++)
    {
        cout << "   " << mas[i];
    }
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
27.11.2015, 23:33  [ТС] 4
аппп
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 34
29.11.2015, 01:36  [ТС] 5
Разобрался , вот готовый код :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Лабороторная № 2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"                       
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int j;                                                          // Объявление переменных
    int i;
    int mas[100];
    int N;
    do {
        cout << " Enter the number of Elements (2...100):  " ;     // Цикл do-while, который проверяет корректность ввода числа N
        cin >> N;
       } while ( N <=0 || N>100 );
    cout << "\n Vse pravilno, N= " << N << endl;
    cout << "\n";
    for ( int i=0; i<N ; i++)
    {
        cout << "Enter Element " << i << ": ";                     // Ввод значений элементов в массив
        cin >> mas[i];
    }
    cout << "\n [" ;
    for (int i=0; i<N; i++)
    {
        cout << "   " << mas[i];                                       // Вывод на экран массива
    }
    cout << "   ]";
    
 
    for (int i=0; i <= N ; i++)                                       // Цикл for , который переставляет местами элементы массива
    {
        if ( mas[i] == 0)
            {
                for (int j=i+1; j<N; j++)
                    if ( mas[j] !=0 && mas[i]==0 )
                    {
                        int a=mas[j];
                        mas[j]=mas[i];
                        mas[i]=a;
                    }
 
 
                    
            }
    }
 
    cout << "\n\n";
    for ( i =0 ; i < N; i++)
    {
        cout << "   " << mas[i];                                   // Вывод на экран преобразованного массива
    }
    cout << endl;
 
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2015, 01:36

Перенести нулевые элементы в конец массива (исправить ошибку)
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех...

Преобразовать массив, переставив все нулевые элементы в конец массива
Помогите с программами с использованием указателей 1. Преобразовать массив, переставив все нулевые...

В двумерном массиве нулевые элементы поставить в конец строк
Заранее спасибо за помощь ) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; ...

Максимальный элемент массива поместить в конец
Может кто уже учит с++, знает как делать, будет отличная практика. Мне через несколько дней лабу...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru