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

Округление ответа и переход в разные части в C++ - C++

Восстановить пароль Регистрация
 
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 220
09.10.2013, 20:42     Округление ответа и переход в разные части в C++ #1
Меня интересует несколько вопросов.

1) Если вбить значение X и Y одновременно 3, либо одновременно -3, то при выводе числа Z(1) получается не очень красивый ответ (-1.11022e-016) - как я понимаю это почти нуль, но может можно как-то округлить, чтобы выдавало чисто число 0, а не вот такое длинное и некрасивое число.
2) Я хотел бы сделать так, чтобы при запуске программы был определенный вопрос. При нажатии клавиши "0" - переходило в англ. часть программки (то есть, тот же код, что и выше, только сделать англ. вариант ответов), а при нажатии клавиши "1" в самом начале - переходило в ту часть, которая написана сейчас.
- Просто хочу понять как сделать переход в одну часть в случае нажатия 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
#include<iostream>
#include<cmath>
#include<cstdlib>
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    double x,y;
    double res1,res2;
    while(true)
    {
    cout << "Введите значение числа \"X\": ";
    cin >> x;
    cout<< "Введите значение числа \"Y\": ";
    cin >> y;
 
    res1=pow(cos(x),4)+pow(sin(y),2)+(1/4.0)*pow(sin(2*x),2)-1;
    res2=(sin(y+x))*(sin(y-x));
 
        if (res1 == -0) {
        res1 = 0;} 
        if (res2 == -0) {
        res2 = 0;} 
 
        cout << "Число Z(1) равняется " << res1 << endl;
        cout << "Число Z(2) равняется " << res2 << endl;
 
    system("pause");
    system("cls");
 
    }
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
09.10.2013, 20:48     Округление ответа и переход в разные части в C++ #2
if else mb?
Trademaster
 Аватар для Trademaster
3 / 3 / 0
Регистрация: 08.10.2013
Сообщений: 21
09.10.2013, 21:07     Округление ответа и переход в разные части в C++ #3
По поводу смены языка - то простое if else . Если пользователь ввел 1 (например) - будет русский ,если нет - ставим английский. Надеюсь как сделать понятно.
А вот по поводу "округления" - это фиг знает ,я могу только посоветовать cout.precesion поставить поменьше ,
либо юзай floor. floor(x + 0.5) - округление до ближайшего целого .
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
09.10.2013, 21:10     Округление ответа и переход в разные части в C++ #4
cout<<fixed<<precision();
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 220
09.10.2013, 21:29  [ТС]     Округление ответа и переход в разные части в C++ #5
Цитата Сообщение от dzrkot Посмотреть сообщение
cout<<fixed<<precision();
Спасибо А можно пояснение к этому небольшое?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
09.10.2013, 21:33     Округление ответа и переход в разные части в C++ #6
Цитата Сообщение от Blueeyer Посмотреть сообщение
Спасибо А можно пояснение к этому небольшое?
fixed меняет представление числа с 1.66666E4 (что-то такое), где Е4 - степень 10^4, на обычную привычную нам 16666,6 , precision() кол-во знаков после запятой, вроде так, погугли лучше я не помню особо
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 220
09.10.2013, 22:30  [ТС]     Округление ответа и переход в разные части в C++ #7
Всё получилось! В итоге из всего этого вышло что-то вроде того, что я выложил ниже. Это если вдруг кому надо.
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
90
91
92
93
#include<iostream>
#include<cmath>
#include<cstdlib>
 
using namespace std;
int main()
{
    // Начало окна выбора языка
    cout << "Choose your language." << endl
    << "for Russian language - press \"1\" then \"Enter\"" <<endl
    << "for English language - press \"2\" then \"Enter\"" << endl
    << "If you want to EXIT - press \"3\" then \"Enter\" " << endl;
 
    double a;
    cout << "Your choice is: " << endl;
    cin >> a;
 
    system("cls");
 
    if (a == 1) {
 
//--------------------Начало русской версии--------------------
    setlocale(LC_ALL, "Russian");
    double x,y;
    double res1,res2;
    while(true)
    {
 
    cout << "--------Русская версия--------" << endl << endl;
    cout << "Введите значение числа \"X\": ";
    cin >> x;
    cout << "Введите значение числа \"Y\": ";
    cin >> y;
 
    res1=pow(cos(x),4)+pow(sin(y),2)+(1/4.0)*pow(sin(2*x),2)-1;
    res2=(sin(y+x))*(sin(y-x));
 
        if (res1 == -0.0000) {
        res1 = 0;} 
        else if (res2 == -0.0000) {
        res2 = 0;} 
 
        cout.precision(4);
        cout << fixed << "Число Z(1) равняется " << res1 << endl;
        cout << fixed << "Число Z(2) равняется " << res2 << endl;
 
    system("pause");
    system("cls");
    }
//--------------------Конец русской версии--------------------
 
    }
    else if (a == 2) {
 
//--------------------Начало английской версии--------------------
    setlocale(LC_ALL, "English");
    cout << "--------English Version--------" << endl << endl;
    double x,y;
    double res1,res2;
    while(true)
    {
    cout << "Enter number \"X\": ";
    cin >> x;
    cout << "Enter number \"Y\": ";
    cin >> y;
 
    res1=pow(cos(x),4)+pow(sin(y),2)+(1/4.0)*pow(sin(2*x),2)-1;
    res2=(sin(y+x))*(sin(y-x));
 
        if (res1 == -0.0000) {
        res1 = 0;} 
        else if (res2 == -0.0000) {
        res2 = 0;} 
 
        cout.precision(4);
        cout << fixed << "Number Z(1) is " << res1 << endl;
        cout << fixed << "Number Z(2) is " << res2 << endl;
 
    system("pause");
    system("cls");
    }
//--------------------Конец английской версии--------------------
 
    }
    else if (a == 3) {
    return 0;
    }
    else {
    cout << "Incorrect choice! Press any key to exit." << endl;
    system("pause");
    return 0;
}
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 05:44     Округление ответа и переход в разные части в C++ #8
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
90
91
92
93
94
95
96
97
98
#include<iostream>
#include<cmath>
#include <string>
#include<cstdlib>
 
using namespace std;
 
string russ[] = {"Russian",
                 "--------Русская версия--------", 
                 "Введите значение числа \"X\": ", 
                 "Введите значение числа \"Y\": ", 
                 "Число Z(1) равняется ", 
                 "Число Z(2) равняется ",
                 "Ещё? (1 - да, 2 - нет): "};
                 
string engl[] = {"English",
                  "--------English Version--------", 
                 "Enter number \"X\": ", 
                 "Enter number \"Y\": ",
                 "Number Z(1) is ", 
                 "Number Z(2) is ",
                 "More? (1 - yes, 2 - no): "};
 
void show(string arr[]);
 
inline double f1(double x, double y)
{
    double res = pow(cos(x), 4) + pow(sin(y), 2) + (1 / 4.0) * pow(sin(2 * x), 2) - 1;
    if (res == -0.0000) return 0;
    
    return res;
}
 
inline double f2(double x, double y)
{
    double res = (sin(y + x)) * (sin(y - x));
    if (res == -0.0000) return 0;
    
    return res;
}
 
int main()
{
    while(true)
    {
        // Начало окна выбора языка
        cout << "Choose your language." << endl
        << "for Russian language - press \"1\" then \"Enter\"" <<endl
        << "for English language - press \"2\" then \"Enter\"" << endl
        << "If you want to EXIT  - press \"3\" then \"Enter\"" << endl;
 
        char a;
        cout << "Your choice is: " << endl;
        (cin >> a).get();
 
        system("cls");
 
        if (a == '1') show(russ);
        else
        if (a == '2') show(engl);
        else
        if (a == '3') return 0;
        else 
        {
            cout << "Incorrect choice! Press any key to exit." << endl;
            system("pause");
            system("cls");
        }
    }
}
 
void show(string arr[])
{
    setlocale(LC_ALL, arr[0].c_str());
    double x, y;
    double res1, res2;
    char a;
    do
    {
        cout << arr[1] << endl << endl;
        cout << arr[2];
        cin >> x;
        cout << arr[3];
        cin >> y;
 
        res1 = f1(x, y);
        res2 = f2(x, y);
 
        cout.precision(4);
        cout << fixed << arr[4] << res1 << endl;
        cout << fixed << arr[5] << res2 << endl;
 
        cout << arr[6];
        (cin >> a).get();
        system("cls");
    
    } while (a == '1');
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2013, 17:45     Округление ответа и переход в разные части в C++
Еще ссылки по теме:

C++ Вывести старшую цифру дробной части и младшую цифру целой части числа
Как поделить консоль на 2 части: в верхней части вывод, в нижней - замена C++
Округление до 0,5 C++

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

Или воспользуйтесь поиском по форуму:
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 220
10.10.2013, 17:45  [ТС]     Округление ответа и переход в разные части в C++ #9
Цитата Сообщение от alsav22 Посмотреть сообщение
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
90
91
92
93
94
95
96
97
98
#include<iostream>
#include<cmath>
#include <string>
#include<cstdlib>
 
using namespace std;
 
string russ[] = {"Russian",
                 "--------Русская версия--------", 
                 "Введите значение числа \"X\": ", 
                 "Введите значение числа \"Y\": ", 
                 "Число Z(1) равняется ", 
                 "Число Z(2) равняется ",
                 "Ещё? (1 - да, 2 - нет): "};
                 
string engl[] = {"English",
                  "--------English Version--------", 
                 "Enter number \"X\": ", 
                 "Enter number \"Y\": ",
                 "Number Z(1) is ", 
                 "Number Z(2) is ",
                 "More? (1 - yes, 2 - no): "};
 
void show(string arr[]);
 
inline double f1(double x, double y)
{
    double res = pow(cos(x), 4) + pow(sin(y), 2) + (1 / 4.0) * pow(sin(2 * x), 2) - 1;
    if (res == -0.0000) return 0;
    
    return res;
}
 
inline double f2(double x, double y)
{
    double res = (sin(y + x)) * (sin(y - x));
    if (res == -0.0000) return 0;
    
    return res;
}
 
int main()
{
    while(true)
    {
        // Начало окна выбора языка
        cout << "Choose your language." << endl
        << "for Russian language - press \"1\" then \"Enter\"" <<endl
        << "for English language - press \"2\" then \"Enter\"" << endl
        << "If you want to EXIT  - press \"3\" then \"Enter\"" << endl;
 
        char a;
        cout << "Your choice is: " << endl;
        (cin >> a).get();
 
        system("cls");
 
        if (a == '1') show(russ);
        else
        if (a == '2') show(engl);
        else
        if (a == '3') return 0;
        else 
        {
            cout << "Incorrect choice! Press any key to exit." << endl;
            system("pause");
            system("cls");
        }
    }
}
 
void show(string arr[])
{
    setlocale(LC_ALL, arr[0].c_str());
    double x, y;
    double res1, res2;
    char a;
    do
    {
        cout << arr[1] << endl << endl;
        cout << arr[2];
        cin >> x;
        cout << arr[3];
        cin >> y;
 
        res1 = f1(x, y);
        res2 = f2(x, y);
 
        cout.precision(4);
        cout << fixed << arr[4] << res1 << endl;
        cout << fixed << arr[5] << res2 << endl;
 
        cout << arr[6];
        (cin >> a).get();
        system("cls");
    
    } while (a == '1');
}
Вау, спасибо, есть что полезное взять отсюда ))
Yandex
Объявления
10.10.2013, 17:45     Округление ответа и переход в разные части в C++
Ответ Создать тему
Опции темы

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