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

X, Y, Z - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
VovaMazur
-12 / 33 / 8
Регистрация: 10.03.2011
Сообщений: 133
14.03.2011, 22:20     X, Y, Z #1
) Дано три действительных числа X, Y, Z. Перераспределить значения так, чтобы в X оказалось меньшее из этих значений, а в Z - большее.
С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
14.03.2011, 22:40     X, Y, Z #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
#include <iostream>
 
void swap(double &, double &);
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    double x, y, z;
 
    std::cout << "Введите x: ";
    std::cin >> x;
    std::cout << "Введите y: ";
    std::cin >> y;
    std::cout << "Введите z: ";
    std::cin >> z;
 
    std::cout << "До сортировки:    " << x << "  " << y << "  " << z << std::endl;
 
    if (x > y)
        swap(x, y);
 
    if (x > z)
        swap(x, z);
 
    if (y > z)
        swap(y, z);
 
    std::cout << "После сортировки: " << x << "  " << y << "  " << z << std::endl;
 
    return 0;
}
 
void swap(double &left, double &right)
{
    double temp = left;
    left = right;
    right = temp;
}
LaГushan
123 / 123 / 14
Регистрация: 12.03.2011
Сообщений: 227
15.03.2011, 00:37     X, Y, Z #3
Для любителей пожёстче, можно и такой вариант попробовать
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
#include <iostream>
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    double x, y, z;
    int mid,min,max;
 
    std::cout << "Введите x: ";
    std::cin >> x;
    std::cout << "Введите y: ";
    std::cin >> y;
    std::cout << "Введите z: ";
    std::cin >> z;
 
    std::cout << "До сортировки:    " << x << "  " << y << "  " << z << std::endl;
 
    mid = (((x<y&&x>z)||(x>y&&x<z))?x:((y<z&&y>x)||(y>z&&y<x))?y:z);
    min = ((x < y && x < z) ? x : (y < z) ? y:z);
    max=((x > y && x > z )? x:( y > z )? y : z);
    y = mid;x = min;z = max;
 
    std::cout << "После сортировки: " << x << "  " << y << "  " << z << std::endl;
 
    return 0;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.03.2011, 01:21     X, Y, Z #4
Тогда уж вот так, чтобы совсем запутать)))
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
#include <iostream>
 
int min(int, int, int);
int max(int, int, int);
int mid(int, int, int);
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    double x, y, z;
 
    std::cout << "Введите x: ";
    std::cin >> x;
    std::cout << "Введите y: ";
    std::cin >> y;
    std::cout << "Введите z: ";
    std::cin >> z;
 
    std::cout << "До сортировки:    " << x << "  " << y << "  " << z << std::endl;
 
    int new_x = min(x, y, z);
    int new_y = mid(x, y, z);
    int new_z = max(x, y, z);
 
    x = new_x;
    y = new_y;
    z = new_z;
 
    std::cout << "После сортировки: " << x << "  " << y << "  " << z << std::endl;
 
    return 0;
}
 
int max(int x, int y, int z)
{
    return x > y ? x > z ? x : z : y > z ? y : z;
}
 
int min(int x, int y, int z)
{
    return x < y ? x < z ? x : z : y < z ? y : z;
}
 
int mid(int x, int y, int z)
{
    return x < y ? x > z ? x : y > z ? z : y : x < z ? x : y > z ? y : z;
}
Добавлено через 1 минуту
Только что-то с mid перемудрил, по-моему, можно проще, чтобы по длине не превышало min и max, но лень пересматривать)))
VovaMazur
-12 / 33 / 8
Регистрация: 10.03.2011
Сообщений: 133
23.03.2011, 20:29  [ТС]     X, Y, Z #5
а можна через printf и scanf?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.03.2011, 20:37     X, Y, Z #6
Цитата Сообщение от LaГushan Посмотреть сообщение
double x, y, z;
Просто из любопытства: а зачем Вы их, как double объявили?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2011, 20:56     X, Y, Z #7
Цитата Сообщение от easybudda Посмотреть сообщение
а зачем Вы их, как double объявили?
Хм...
Цитата Сообщение от VovaMazur Посмотреть сообщение
Дано три действительных числа X, Y, Z
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.03.2011, 22:57     X, Y, Z #8
silent_1991, ну это-то понятно, но дальше они всё равно к int приводятся, при чём просто отбрасыванием дробной части, а не округлением хотябы...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2011, 23:03     X, Y, Z #9
easybudda, а, ну да))) Видимо причиной всему то, что LaГushan взял за основу мой код с правильными double, и дописал туда свои неправильные int)))
VovaMazur
-12 / 33 / 8
Регистрация: 10.03.2011
Сообщений: 133
08.05.2011, 22:20  [ТС]     X, Y, Z #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
#include"stdafx.h"
 
void swap(double &, double &);
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    double x, y, z;
 
    printf("Введіть x: ");
    scanf("%lf",&x);
    printf("Введіть y: ");
    scanf("%lf",&y);
    printf("Введіть z: ");
    scanf("%lf",&z);
 
    printf("До сортування:  x=%lf y=%lf z=%lf\n",x,y,z);
 
    if (x > y)
        swap(x, y);
 
    if (x > z)
        swap(x, z);
 
    if (y > z)
        swap(y, z);
 
    printf("Після сортування: x=%lf y=%lf z=%lf\n",x,y,z);
 
    return 0;
}
 
void swap(double &left, double &right)
{
    double temp = left;
    left = right;
    right = temp;
}
Yandex
Объявления
08.05.2011, 22:20     X, Y, Z
Ответ Создать тему
Опции темы

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