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

Сравнение трёх чисел - C++

Восстановить пароль Регистрация
 
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
07.11.2012, 17:22     Сравнение трёх чисел #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
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <cstdio>
#include <cstring>
using namespace std;
 
void answer(int max, int min) {
    if (max == min)
        cout << "Все числа равны.";
    else
        cout << max << " максимальное, " << min << " минимальное.";
}
 
int main() {
    int a, b, c, q;
 
    cout << "Введите три числа:\n";
    cin >> a >> b >> c;
    cout << "\n";
 
    if (a == b) {
        if (a > c)
            answer(a, c);
        else
            answer(c, a);
    }
    else if (b == c) {
        if (b > a)
            answer(b, a);
        else
            answer(a, b);
    }
    else if (a == c) {
        if (a > b)
            answer(a, b);
        else
            answer(a, c);
    }
    else {
        if (a > b && a > c) {
            if (b < c)
                answer(a, b);
            else
                answer(a, c);
        }
        else if (b > a && b > c) {
            if (a < c)
                answer(b, a);
            else
                answer(b, c);
        }
        else if (c > a && c > b) {
            if (a < b)
                answer(c, a);
            else
                answer(c, b);
        }
        else
            cout << "Неучтённый вариант.";
    }
 
    return 0;
}
Протестил все возможные варианты данных, работает. Получается, в лучшем случае (например, 1 1 2) выполнится три операции сравнения, в худшем (1 2 3) - десять. И как теперь понять, хорошая эта реализация или нет? От чего можно вообще отталкиваться?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Grovello
 Аватар для Grovello
12 / 12 / 0
Регистрация: 09.06.2012
Сообщений: 92
07.11.2012, 17:27     Сравнение трёх чисел #2
Если хотите проверить живучесть алгоритма сгенерируйте файл с приличным количеством аргументов и посмотрите захелебнется он или нет.
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
07.11.2012, 17:29  [ТС]     Сравнение трёх чисел #3
Цитата Сообщение от Grovello Посмотреть сообщение
Если хотите проверить живучесть алгоритма сгенерируйте файл с приличным количеством аргументов и посмотрите захелебнется он или нет.
Не понял) Т.е. попробовать сравнить числа порядка 4*10^35?
Grovello
 Аватар для Grovello
12 / 12 / 0
Регистрация: 09.06.2012
Сообщений: 92
07.11.2012, 17:32     Сравнение трёх чисел #4
Цитата Сообщение от ramses Посмотреть сообщение
Не понял) Т.е. попробовать сравнить числа порядка 4*10^35?
Не дочитал, что для трех чисел, ошибся.
А по сабжу главная задача это свести количество итераций к минимуму.
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
07.11.2012, 17:46  [ТС]     Сравнение трёх чисел #5
Цитата Сообщение от Grovello Посмотреть сообщение
А по сабжу главная задача это свести количество итераций к минимуму.
Итераций - т.е. условий? Попытаться сократить, обобщить...

Добавлено через 8 минут
Ладно, это слишком широкий вопрос, который требует слишком развёрнутого ответа. Т.е. книжный. Посоветуете что-нибудь типа основ программирования, практических советов и т.п.? Кнута мне ещё рано читать, сложноват, попроще бы что-нибудь.
Grovello
 Аватар для Grovello
12 / 12 / 0
Регистрация: 09.06.2012
Сообщений: 92
07.11.2012, 17:48     Сравнение трёх чисел #6
Цитата Сообщение от ramses Посмотреть сообщение
Итераций - т.е. условий? Попытаться сократить, обобщить...

Добавлено через 8 минут
Ладно, это слишком широкий вопрос, который требует слишком развёрнутого ответа. Т.е. книжный. Посоветуете что-нибудь типа основ программирования, практических советов и т.п.? Кнута мне ещё рано читать, сложноват, попроще бы что-нибудь.
Итерация это шаг.
Основ программирования или практических советов?
Для первого "Философия С++" Брюса Эккеля
Для второго гугл и форумы.
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
07.11.2012, 18:26  [ТС]     Сравнение трёх чисел #7
Цитата Сообщение от Grovello Посмотреть сообщение
Основ программирования или практических советов?
Пожалуй, первого. А вообще по программированию что можно почитать?
Grovello
 Аватар для Grovello
12 / 12 / 0
Регистрация: 09.06.2012
Сообщений: 92
07.11.2012, 19:37     Сравнение трёх чисел #8
Цитата Сообщение от ramses Посмотреть сообщение
Пожалуй, первого. А вообще по программированию что можно почитать?
По общей алгоритмизации? Просто программирование расплывчатое определение.
По си "Философия С++" Брюса Эккеля
По джаве Хорсмена
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
07.11.2012, 20:04  [ТС]     Сравнение трёх чисел #9
Цитата Сообщение от Grovello Посмотреть сообщение
По общей алгоритмизации?
Ну, наверное, да. Что-нибудь просто написанное.
Grovello
 Аватар для Grovello
12 / 12 / 0
Регистрация: 09.06.2012
Сообщений: 92
07.11.2012, 20:07     Сравнение трёх чисел #10
Цитата Сообщение от ramses Посмотреть сообщение
Ну, наверное, да. Что-нибудь просто написанное.
К сожалению ничего общего даже не знаю, читал только сугубо ориентированные книги.
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
07.11.2012, 20:56  [ТС]     Сравнение трёх чисел #11
Жаль. Спасибо и на этом)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 21:31     Сравнение трёх чисел
Еще ссылки по теме:

C++ третья степень суммы трёх чисел
C++ не могу дописать программу! осталось условие на нахождение наибольшего из трёх чисел!
C++ Наименьшее общее кратное трёх чисел

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.11.2012, 21:31     Сравнение трёх чисел #12
У алгоритма константная сложность, поэтому я бы посоветовал избегать настолько мелочных оптимизаций. Компилятор лучше вас знает, как это реализовать.
Yandex
Объявления
07.11.2012, 21:31     Сравнение трёх чисел
Ответ Создать тему
Опции темы

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