Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 1
Регистрация: 03.10.2009
Сообщений: 157

Нулевые элементы переставить в начало массива

06.12.2012, 23:49. Показов 966. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите разобраться.
Вот задание : Нулевые элементы переставить в начало массива.Усложнение: остальные расположить в порядке возрастания. *

В принципе у меня сделано, но он у меня сначала находит первый нулевой элемент, и после него добавляет все отсальные. Не могу сделать чтобы первый нулевой элемент шел в начало массива. (Про возрастание - ничего делать не нужно).
Вот код : (подправить функцию void move_nol (int *x,int n))

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
67
68
69
70
71
72
73
74
75
76
77
#include <clx.h>
#include <conio.h> // áèáëèîòåêa êîíñîëüíîãî ââîäà/âûâîäà, getch()
#include <stdio.h> // ïîäêëþ÷åíèå scanf() è printf()
#pragma hdrstop
//----------------------------------------------------------------------------
 
void sort_bubble (int *x,int n);
void move_nol (int *x,int n);
void in_arr( int *arr, int n );
void out_arr( int *arr, int n );
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
void main()
{ int i,j,k,n;
int x[50];
printf("\n\n\t*** Work Number 11 ***\n\n Enter razmer massiva n: ");
scanf ("%d",&n);
in_arr( x, n );
 
printf(" \n Ishodniy massiv razmerom %d: \n", n);
out_arr( x, n );
printf ("\n");
printf ("\n Massiv posle perestanovki nuley: \n");
move_nol (x,n);
out_arr (x,n);
printf ("\n");
printf ("\n Massiv po vozrasnaniy : \n");
sort_bubble( x, n );
out_arr (x,n);
getch ();
}
//-------------------------------------------------------------------------------
void  in_arr( int *arr, int n )
{   printf("\n Vvedie %d chisel massiva: ", n);
    for ( int i = 0; i < n; i++)
        scanf( "%d", arr++ ); // ââîä ïî óêàçàòåëþ
}
//-------------------------------------------------------------------------------
void  out_arr( int *arr, int n )
{   for ( int i = 0; i < n; i++)
    {   printf( " %d ", *arr++ ); // âûâîä ïî óêàçàòåëþ è ïåðåõîä
    // íà ñëåäóþùèé ýëåìåíò ìàññèâà
        if ( (i+1) % 10 == 0 ) // âûâîä ïî 10 ÷èñåë â ñòðîêå:
            printf("\n");
    }
}
//----------------------------------------------------------------------------
void move_nol (int *x,int n)
{ int i,k = n, w;
for (i=0; i < n-2; i++)
if (x[i]==0) {k=i+1; break;}
if (k==n)return;
for (i=k; i < n ; i++)
if (x[i]==0)
{w = x[i];
x[i]= x[k];
x[k]=w;
k++;
}
}
 
//---------------------------------------------------------------------------
void  sort_bubble( int *x, int n )
{ int  i, k, w;
for( k = 1; k < n; k++)  // ïåðåáîð âñåõ íåóïîðÿäî÷åííûõ ÷àñòåé
    // ìàññèâà ðàçìåðîì n-k+1
for( i = 0; i < n-k; i++) // ïåðåñòàíîâêà ìàêñèìàëüíîãî ÷èñëà èç
// íåóïîðÿäî÷åííîé ÷àñòè ìàññèâà ðàçìåðîì n-k+1 â êîíåö  ýòîé ÷àñòè
if( x[i] > x[i+1] ) // ïåðåñòàíîâêà áîëüøåãî ÷èñëà âïðàâî
{ w = x[i];
x[i] = x[i+1];
x[i+1] = w;
 }
}
Добавлено через 9 минут
В этом часте коде заменил k=0, правильно ли?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void move_nol (int *x,int n)
{ int i,k = n, w;
for (i=0; i < n-2; i++)
if (x[i]==0) {k=0; break;} // [B][U]Сделал k=0, было k=i+1 , вроде работает[/U][/B]
if (k==n)return;
for (i=k; i < n ; i++)
if (x[i]==0)
{w = x[i];
x[i]= x[k];
x[k]=w;
k++;
}
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2012, 23:49
Ответы с готовыми решениями:

Как убрать нулевые элементы из массива?
Допустим есть массив int mas у негопоследние 5 строчек содержат нулевые элементы. Как создать новый массив у которого именно этих...

Заменить нулевые элементы в начале массива
Здравствуйте! Имеется лабораторное задание по одномерному массиву. Введите массив,элементы которого являются 0,1 или 2. Замените...

Переставить элементы данного массива в обратном порядке
история такая: массив у меня заполняется рандомно и выводится в StringGrid1. потом я вроде как меняю их последовательность, но оно не...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.12.2012, 23:49
Помогаю со студенческими работами здесь

Все отрицательные элементы массива перенести в начало, а все остальные в конец
Здраствуйте, помогите пожалуйста написать программу Нужно преобразовать массив Х по следующему правилу: все отрицательные элементы...

Переставить нулевые элементы строк в начало
После заполнения значений программа перестает работать, посмотрите пожалуйста. Буду очень благодарен, спасибо за помощь) #include...

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

В каждом столбце матрицы D[N,M] нулевые элементы переставить в начало столбца
В каждом столбце матрицы D нулевые элементы переставить в начало столбца. Помогите с задачей, пожалуйста Добавлено через 4 минуты ...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru