Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
anya_anya
0 / 0 / 1
Регистрация: 09.10.2013
Сообщений: 36
#1

Для каждого из массивов все отрицательные элементы переместить в начало массива, а все положительные — в конец - C++

24.04.2014, 21:49. Просмотров 817. Ответов 2
Метки нет (Все метки)

Составить программу, которая превращает массивы А [10] и В [18] следующим образом: для каждого из них все отрицательные элементы одномерного массива переместить на начало массива, а все положительные - в конец массива с сохранением порядка следования. Инициализацию, вывод элементов массива, их обработку организовать в отдельных функциях.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 21:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Для каждого из массивов все отрицательные элементы переместить в начало массива, а все положительные — в конец (C++):

Преобразование массивов А[10] и В[18] так, чтобы для каждого все отрицательные элементы переместить в начало
Составить программу, которая преобразует массивы А и В следующим образом: для...

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

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец
В одномерном массиве все отрицательные элементы переместить в начало массива, а...

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования
Здравствуйте форумчане! Подскажите, как решить данные задания. Отстаю от...

Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n). Подсчитать количес
Данный массив A (n). Все положительные его элементы поместить в начало массива...

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

2
Denis123456789
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
24.04.2014, 23:55 #2
Лучший ответ Сообщение было отмечено anya_anya как решение

Решение

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
#include <iostream>
using namespace std;
 
void vyvod_massiva(int mas[], int raz)
{
for (int i=0;i<raz;i++)
cout<<mas[i]<<" ";
}
void obrabotka(int mas[], int raz)
{
int i=0,j=-1,z;
 
do
{
while (mas[i]<0 && i<raz) i++;
if (j<0)
j=i+1;
else j++;
while (j<raz && mas[j]>=0) j++;
z=mas[j];
if (i<raz && j<raz)
{
for (int k=j;k>i;k--)
mas[k]=mas[k-1];
mas[i]=z;
}
i++;
}while (i<raz);
}
int main()
{
int A[10]={2,0,-1,6,-7,8,-4,7,12,-3};
obrabotka(A,10);
vyvod_massiva(A,10);
return 0;
}
так вроде
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7002 / 3294 / 448
Регистрация: 04.12.2011
Сообщений: 9,113
Записей в блоге: 5
25.04.2014, 00:25 #3
anya_anya, у меня сортировка медленнее, но инициализация может пригодиться.
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
78
79
80
81
#include <iostream>
#include<ctime>
using namespace std;
 
int rnd_sign(){
return rand()%2;
}
 
int rnd_number(int n){
return rand()%n +1;
}
 
void init_arr( int *arr, int sz, int max_val){
    for( int i = 0; i < sz; ++i ){
        arr[i] = rnd_number(max_val);
        if(rnd_sign())arr[i] = -arr[i]; 
    }
}
 
void print_arr( int *arr, int sz ){
for( int i = 0; i < sz; ++i )
cout<<arr[i]<<" ";
}
 
int negative_count( int *arr, int sz ){
int cnt=0;
for( int i = 0; i < sz; ++i ) 
if ( arr[i] < 0 ) cnt++;
return cnt;
}
 
void sort_by_sign( int *arr, int sz ){
int number_of_negatives = negative_count( arr, sz );
int *negative_arr = new int[number_of_negatives]; 
int number_of_positives = sz-number_of_negatives;
int *positive_arr = new int[number_of_positives];
int neg_cnt=0, pos_cnt=0;
for( int i = 0; i < sz; ++i ) 
if ( arr[i] < 0 )negative_arr[neg_cnt++] = arr[i];
else
positive_arr[pos_cnt++] = arr[i];
for( int i = 0; i < number_of_negatives; ++i )
arr[i]=negative_arr[i];
 pos_cnt=0;
for( int i = number_of_negatives; i < sz; ++i )
arr[i]=positive_arr[i-number_of_negatives];
delete []negative_arr;
delete []positive_arr;
}
 
int main(){
const int A_sz = 18;
const int max_value_A = 180;
const int B_sz = 10;
const int max_value_B = 100;
 
srand((size_t)time(0));
int A[A_sz];
init_arr( A, A_sz, max_value_A);
cout<<"A["<<A_sz<<"]"<<endl;
print_arr( A, A_sz );
cout<<endl;
sort_by_sign( A, A_sz );
cout<<"sorted A["<<A_sz<<"]"<<endl;
print_arr( A, A_sz );
cout<<endl;
 
int B[B_sz];
init_arr( B, B_sz, max_value_B);
cout<<"B["<<B_sz<<"]"<<endl;
print_arr( B, B_sz );
cout<<endl;
sort_by_sign( B, B_sz );
cout<<"sorted B["<<B_sz<<"]"<<endl;
print_arr( B, B_sz );
cout<<endl;
 
cout<<endl;
system("pause"); 
    return 0; 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 00:25
Привет! Вот еще темы с решениями:

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

Все отрицательные цифры поместить в начало массива, а положительные в конец
4. Дан массив положительных и отрицательных чисел. Переписать массив так, чтобы...

Сдвинуть все отрицательные элементы с в начало массива,сохраняя их порядок между собой, а все положительные элементы
Дан целочисленный список с количеством элементов 2n, не содержащий нулей....

Переместить все положительные элементы массива в начало
Изменить исходный массив следующим образом: переместить все положительные...


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

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

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