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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ В отдельной функции организовать подсчет суммы элементов матрицы, удовлетворяющих условию http://www.cyberforum.ru/cpp-beginners/thread1156646.html
Составить программу, в которой сформировать прямоугольную таблицу С с n × m целых чисел в динамической памяти, в отдельной функции организовать подсчет суммы элементов, удовлетворяющих условию -4<c<=5
C++ Копирование строки. При вводе пробела программа пропускает последующий ввод данных char st, st1; int k, m, i, j; system("cls"); cout <<"Введите строку"<<endl; cin >>st; cout <<"Введите номер символа, начиная с которого выполнять копирование"<<endl; cin >>k; cout <<"Введите кол-во символов для копирования"<<endl; cin >>m; for (i=0; i<k-1; i++) http://www.cyberforum.ru/cpp-beginners/thread1156623.html
C++ Шаблоны в C++
Здравствуйте! Написал такой код: #include <QtCore/QCoreApplication> #include <iostream> #include <string> using namespace std; template <typename T>
Найти номера строк матрицы, все элементы которых чётны C++
Дали задание, но не объяснили как делать, а нужно срочно. Задание следующее: Дана действительная матрица порядка n. Номера строк, все элементы которых чётны. Добавлено через 10 минут Вывести на экран номера строк, все элементы которых чётны. Добавлено через 47 минут Начальный код: #include "stdafx.h" #include <iostream>
C++ Моделирование по схеме случайных событий http://www.cyberforum.ru/cpp-beginners/thread1156604.html
В механический цех поступают листы металла. Длина листов может иметь размеры 9.1; 9.5; 10; 10.5; 11 (метров) с вероятностью 0.2; 0.1; 0.4; 0.1; 0.2. Согласно стандарту длина может быть 9, 10 или 11 метров. Разница отрезается и поступает в отход. С вероятностью 0.05 каждый лист может быть бракованным и также идет в отход. Найти % отходов
C++ Удалить из строки все пробелы, расположенные перед знаком препинания Дана строка до точки, группа символов в которой между пробелами считается словом, знаки препинания от слова пробелом не отделяются. Удалить из строки все пробелы, расположенные перед знаком препинания. подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 283
Регистрация: 04.12.2011
Сообщений: 7,710
Записей в блоге: 3
25.04.2014, 00:25     Для каждого из массивов все отрицательные элементы переместить в начало массива, а все положительные — в конец
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; 
}
 
Текущее время: 22:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru