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

Интересная сортировка массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите написать задачи на С++ по теме Классы памяти http://www.cyberforum.ru/cpp-beginners/thread429602.html
1.Используя только статические и локальные переменные, создать модули.Функция-счётчик. Возвращает целое значение, уменьшающееся на 1 при каждом вызове. Начальное значение равно 10. При достижении значения, равного нулю, счётчик должен автоматически сбрасываться, и в следующий раз, при вызове этой функции, она должна вернуть 10. 2.Используя глобальные переменные, обеспечить передачу информации...
C++ Помогите решить задачи С++ по теме типы данных Написать программу, получающую с клавиатуры число и обрабатывающую его с помощью следующей функции.Функция округляет число типа int до разряда тысяч (до 3 перед запятой). Функциями из math.h не пользоваться. http://www.cyberforum.ru/cpp-beginners/thread429600.html
C++ Самые примитивные задачки про стек и очередь
Например, как сделать самый примитив: Определить ф-ю, которая после каждого элемента стоящего на четном месте всталяет -1. нумерация элементов начинается с 0. Тут нужно решать с помощью динамических структур. Как? Или подскажите, где можно почитать и научиться хотя бы самому примитивному.
C++ Задача по С++ на одномерный массив
Написать программу которая выводит сумму четных чисел от2 до 20... с помощью одномерного массива!!!!
C++ С чего начать знакомится с C и C++? Начало с полного 0 http://www.cyberforum.ru/cpp-beginners/thread429530.html
Общее: Я как бы начал знакомится с языком Jass но не оч хорошо получилось... Это надо было мне для проекта... С php кое как дружу, с SQL тоже кое как... Видел С++ но сам не знаю как с ним обращаться и что с чем едят в обще.. Суть вопроса: С каких статей начинать учить с полного нуля C и С++ что бы можно было начинать уже калькуляторы писать =)) м? Если можно то дайте 1,2 ссылочки на...
C++ Программа имитации входа в систему Всем привет! Нам на иформатике задали написать программу, что имитирует вход в систему: Создайте имитацию входа в систему, которая будет запрашивать пароль и выдавать приглашение только в случае совпадения введенного пароля с заранее определенным в программе, а в случае ошибки выдавать сообщение об ошибке и просьбе повторить ввод. После 3 ошибок программа должна выдать сообщение о попытке... подробнее

Показать сообщение отдельно
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
17.01.2012, 02:10     Интересная сортировка массива
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
82
83
84
85
86
87
88
89
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
void sort(int [][3], int, int, int, int = 0);
void swap(int&, int&);
 
int main()
{
    int mass[3][3];
 
    srand(time(NULL));
 
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            mass[i][j] = rand() % 50;
            std::cout << std::setw(5) << mass[i][j];
        }
 
        std::cout << std::endl;
    }
 
    for(int i = 0; i < 3; i++) // строки
        sort(mass,i,0,3);
 
    for(int j = 0; j < 3; j++) // столбцы
        sort(mass,j,0,3,1);
 
    std::cout << std::endl;
 
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 3; j++)
            std::cout << std::setw(5) << mass[i][j];
 
        std::cout << std::endl;
    }
 
    return 0;
}
 
void sort(int mass[][3], int status, int begin, int end, int key)
{
    if(begin < end)
    {
        int indexOfMin = begin;
 
        if(!key)
        {
            int min = mass[status][begin];
 
            for(int j = begin; j < end; j++)
                if(mass[status][j] < min)
                {
                    min = mass[status][j];
                    indexOfMin = j;
                }
        }
        else
        {
                        int min = mass[begin][status];
 
                        for(int i = begin; i < end; i++)
                                if(mass[i][status] < min)
                                {
                                        min = mass[i][status];
                                        indexOfMin = i;
                                }
                }
 
 
        if(!key && indexOfMin != begin)
            swap(mass[status][begin],mass[status][indexOfMin]);
        else if(key && indexOfMin != begin)
            swap(mass[begin][status],mass[indexOfMin][status]);
 
        sort(mass,status,begin+1,end,key);
    }
}
 
void swap(int& a, int& b)
{
    a += b;
    b = a - b;
    a -= b;
}
 
Текущее время: 20:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru