Форум программистов, компьютерный форум, киберфорум
Наши страницы

Отсортировать элементы массива: отрицательные – в начало массива, положительные – в конец - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сложение векторов в структуре http://www.cyberforum.ru/cpp-beginners/thread244766.html
Надо сложить 2 вектора использую функции структуры. Пока дошел до этого варианта: #include "stdafx.h" #include <iostream> #include <math.h> #include <string> using namespace std; float...
C++ MVS 2010 Пишу на Microsoft visual studio 2010 на с++. Проблема такая: После сборки программы и сохранения компонентов беру ексешник в папочке "debug". Запускаю - все работает, но стоит мне этот екзешник... http://www.cyberforum.ru/cpp-beginners/thread244762.html
оператор enum найти все черные пятницы месяца C++
Используя перечисляемый тип, определить тип «дни недели» и выдать все «черные» пятницы этого года (т.е. число месяца равно13, а день недели – пятница). c enum не получается, только если так...
Вычисление значения функции C++
вот вид на листе бумаги,задание 1
C++ Сделать описание программы на классы http://www.cyberforum.ru/cpp-beginners/thread244725.html
Нужно составить описание этой программы #ifndef complexH #define complexH #include <math.h> //--------------------------------------------------------------------------- //Mantis and the...
C++ просматривая поочередно элементы диагоналей двумерного массива Здравствуйте уважаемые посетители портала CyberForum.ru, хотелось бы обратится к вам с просьбой, написать небольшую программу на С++ Задание: Просматривая поочередно элементы диагоналей ... подробнее

Показать сообщение отдельно
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
19.02.2011, 00:15
сортировка вставками
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#define N 11
 
void sort(int con[N]){
    int tmp, *a, *b;
    for(a=con+1; a<con+N; a++){
        tmp=*a;
        for(b=a-1; b>=con&&(*b>=0&&tmp<0||*b>0&&tmp==0); --b){
            *(b+1)=*b;
        }
        *(b+1)=tmp;
    }
}
 
int main(){
    int con[N]={0, 5, -2, 1, -3, 0, 0, -45, -3, -3, 7};
    sort(con);
    for(int* a=con; a<con+N; a++){
        std::cout<<*a<<"  ";
    }
}
Добавлено через 1 час 24 минуты
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
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<iostream>
#include<bitset>
#define N 11
 
int dif(int n){
    int one=0, zero=0;
    std::bitset<32> bit(n);
    for(int i=0; i<32; i++){
        if(bit[i]==1) ++one;
        else ++zero;
    }
    //std::cout<<one-zero;
    return one-zero;
}
 
void sort(int con[], int n){
    int tmp, *a=0, *b=0;
    for(a=con+1; a<con+n; a++){
        tmp=*a;
        for(b=a-1; b>=con&&(dif(*b)<dif(tmp)); --b){
            *(b+1)=*b;
        }
        *(b+1)=tmp;
    }
}
 
void print(int mas[], int n){
    for(int *p=mas; p<mas+n; p++){
        std::cout<<*p<<"  ";
    }
}
 
int main(){
    int con[N]={-1, 5, -2, 1, -3, 0, 0, -45, -3, -3, 7}, neg[N], rest[N];
    int *pcon=con, *pneg=neg, *prest=rest;
    for(; pcon<con+N; ++pcon){
        if(((pcon-con)%2)&&((*pcon)%2)&&(*pcon)<0){
            *pneg++=*pcon;
        }
        else *prest++=*pcon;
    }
    std::cout<<"Neg\n";  //нечетные отрицательные элементы
    print(neg, pneg-neg);
    std::cout<<"\nRest\n";//Оставшийся массив
    print(rest, prest-rest);
    sort(rest, prest-rest);
    std::cout<<"\nSorted rest\n";//Оставшийся массив отсортирован
    print(rest, prest-rest);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru