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

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

Восстановить пароль Регистрация
 
anya_anya
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 31
24.04.2014, 21:49     Для каждого из массивов все отрицательные элементы переместить в начало массива, а все положительные — в конец #1
Составить программу, которая превращает массивы А [10] и В [18] следующим образом: для каждого из них все отрицательные элементы одномерного массива переместить на начало массива, а все положительные - в конец массива с сохранением порядка следования. Инициализацию, вывод элементов массива, их обработку организовать в отдельных функциях.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 21:49     Для каждого из массивов все отрицательные элементы переместить в начало массива, а все положительные — в конец
Посмотрите здесь:

[C++]Все отрицательные элементы массива перенести в начало, а все остальные - в конец C++
все положительные элементы поставить в начало а отрицательные в конец C++
C++ Необходимо, пройдя по массиву один раз, все его положительные элементы поставить в начало а отрицательные в конец
В одномерном массиве все отрицательные элементы переместить в начало массива C++
C++ Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все четные элементы, а в конец массива - все нечетные
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования C++
Переместить все положительные элементы в начало массива C++
Поставить в начало массива все четные элементы, а конец – все нечетные C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
24.04.2014, 23:55     Для каждого из массивов все отрицательные элементы переместить в начало массива, а все положительные — в конец #2
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;
}
так вроде
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6158 / 2887 / 282
Регистрация: 04.12.2011
Сообщений: 7,686
Записей в блоге: 3
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; 
}
Yandex
Объявления
25.04.2014, 00:25     Для каждого из массивов все отрицательные элементы переместить в начало массива, а все положительные — в конец
Ответ Создать тему
Опции темы

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