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

Отсортировать элементы массива: отрицательные – в начало массива, положительные – в конец - 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 x,y,z,xi,yi,zi,zj,xj,yj; struct vector { vector (float px=0, float py=0,float pz=0) {
C++ MVS 2010 Пишу на Microsoft visual studio 2010 на с++. Проблема такая: После сборки программы и сохранения компонентов беру ексешник в папочке "debug". Запускаю - все работает, но стоит мне этот екзешник запустить на другом компьютере - возникает ошибкак. В чем дело ? http://www.cyberforum.ru/cpp-beginners/thread244762.html
оператор enum найти все черные пятницы месяца C++
Используя перечисляемый тип, определить тип «дни недели» и выдать все «черные» пятницы этого года (т.е. число месяца равно13, а день недели – пятница). c enum не получается, только если так допустим #include <iostream> #include <string> using namespace std; int main()
Вычисление значения функции C++
вот вид на листе бумаги,задание 1
C++ Сделать описание программы на классы http://www.cyberforum.ru/cpp-beginners/thread244725.html
Нужно составить описание этой программы #ifndef complexH #define complexH #include <math.h> //--------------------------------------------------------------------------- //Mantis and the exponential (2) class complex_2{ protected: int mant,exp;
C++ просматривая поочередно элементы диагоналей двумерного массива Здравствуйте уважаемые посетители портала CyberForum.ru, хотелось бы обратится к вам с просьбой, написать небольшую программу на С++ Задание: Просматривая поочередно элементы диагоналей двумерного массива, выбрать все положительные числа в одномерный массив и произвести его сортировку методом прямого включения в порядке убывания Заранее буду благодарен, всем кто отзовется..Спасибо подробнее

Показать сообщение отдельно
ping_rulezzz
26 / 26 / 4
Регистрация: 18.02.2011
Сообщений: 51
18.02.2011, 20:53     Отсортировать элементы массива: отрицательные – в начало массива, положительные – в конец
Не совсем понятно что имелось в виду.
Оставшийся массив отсортировать по убыванию разности количества единиц и нулей в двоичном представлении числа.
поэтому придётся доделать самому 2ое задание - там не сложно.
Принципе 2ое задание почти сделано, добавить сортировку можно используя часть кода отсюда - http://forum.ishodniki.ru/index.php?topic=10442.0
По 1ому заданию - более изящного способа сортировки не смог придумать на скорую руку, м.б. кто-нибудь сделает красивее.

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
void foo(int *mas, const size_t size) {
    int *t = new int[size];
    int pos_count = 0;
    int neg_count = 0;
    int zero_count = 0;
    
    for (size_t i = 0; i < size; ++i) {
        if (mas[i] > 0) {
            ++pos_count;
        } else if (mas[i] < 0) {
            ++neg_count;
        } else {
            ++zero_count;
        }
    }
 
    int temp1 = pos_count;
    int temp2 = neg_count;
    int temp3 = zero_count;
 
    for (size_t i = 0; i < size; ++i) {
        if (mas[i] > 0) {
            t[pos_count - (temp1--)] = mas[i];
        } else if (mas[i] < 0) {
            t[pos_count + zero_count + neg_count - (temp2--)] = mas[i];
        } else {
            t[pos_count + zero_count -(temp3--)] = mas[i];
        }
    }
 
    for (size_t i = 0; i < size; ++i) {
        mas[i] = t[i];
    }
    delete []t;
}
 
void foo2(int *mas, size_t size) {
    int *new_mas = new int[size];
    int cur_pos = 0;
    int abs_pos = 0;
 
    for (size_t i = 0; i < size; ++i) {
        
        if((abs_pos % 2 == 1) && (mas[i] < 0)) {
            new_mas[cur_pos++] = mas[i];
            
            for (size_t y = i; y < size - 1; ++y){
                mas[y] = mas[y+1];
            }
            --i;
            --size;
            mas[size] = 0;
 
        }
        ++abs_pos;
    }
 
    for(size_t i = 0; i < size; ++i) {
        cout << mas[i] << endl;
    }
    
    for(size_t i = 0; i < cur_pos - 1; ++i) {
        cout << new_mas[i] << endl;
    }
 
}
ЗЫ циклы вывода в foo2 остались для отладки
 
Текущее время: 23:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru