Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 23.11.2018
Сообщений: 7
1

Деление с целым результатом

20.05.2019, 22:27. Показов 413. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Первая программа.

Изначально преподаватель придрался к тому что (i - 5) / m и m / 10 дадут ЦЕЛЫЙ результат.
После изменения кода вновь прилетело по шапке. Не доволен объявлением (i - 5) / m и m / 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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//Вариант 45. Для произвольного значения m вычислим значение суммы.
//Значения m, y0, y1, y2 вводится с клавиатуры.
//Значение yi вычисляется по формуле y[i]=0.2*sin(y[i-3])-tan^2(y[i-1]) +1.5,
//где i=3, 4, 5,...,m
 
#include <iostream>
#include <locale.h>
#include <cmath>
 
using namespace std;
double recur1 (int m, double y0, double y1, double y2);
double recur2 (int m, double y0, double y1, double y2);
double recur3 (int m, double y0, double y1, double y2);
 
//main begin ____________________________________________________________________________
int main()
{
    int var, m;
    double  re1, re2, re3,                  //результат решения задачи
                y0, y1, y2;                 //исходные данные
    setlocale(LC_ALL, "Russian");
    for (;;)
    {//Выбор действия
        cout << "\n Вид действия: " << endl;
        cout << " 1 - вычисление суммы по рекурентной формуле" << endl;
        cout << " 2 - завершение задачи" << endl;
        cout << " Введите вид действия => ";
        cin >> var;
        switch (var)
        {case 1:    //ввод исходных данных
            cout << "Введите значение m => ";
            cin >> m;
            cout << "Введите значения y0, y1, y2 => ";
            cin >> y0 >> y1 >> y2;
            re1 = recur1(m, y0, y1, y2);
            re2 = recur1(m, y0, y1, y2);
            re3 = recur1(m, y0, y1, y2);
    //Вывод результата
            std::cout.setf(std::ios::fixed);
            cout << " Для цикла WHILE результат     = " << re1 << endl;
            cout << " Для цикла DO..WHILE результат = " << re2 << endl;
            cout << " Для цикла FOR результат  = " << re3 << endl;
            break;
        default: return 1;
        }//switch
    }//for
}
    //main_end_______________________________________________________________________________
    //recur1_beg_____________________________________________________________________________
    //Вычисление значения суммы циклом WHILE
double recur1(int m, double y0, double y1, double y2)
 
{
    int i = 0;          //текущий номер слагаемого
    int x = (i - 5) / m;
    int z = m / 10;
    double y,           //очередное значение y[i]
        sum = 0;        //начальное значение суммы
 
    sum += y0 * y0 - x; i++;
    sum += y1 * y1 - x; i++;
    sum += y2 * y2 - x; i++;
    while (i <= 2 * m)
    {
        y = 0.2 * sin(y0) - tan(y2) * tan(y2) + 1.5;
        sum += y * y - x;
        y0 = y1;
        y1 = y2;
        y2 = y;
        i++;
    }
    return (z - sum);
}
//recur1_end___________________________________________________________________________
//recur2_beg___________________________________________________________________________
//Вычисление значения суммы циклом DO...WHILE
double recur2 (int m, double y0, double y1, double y2)
{
    int i = 0;              //текущий номер слагаемого
    int x = (i - 5) / m;
    int z = m / 10;
    double y,               //очередное значение y[i]
        sum = 0;            //начальное значение суммы
    sum += y0 * y0 - x; i++;
    sum += y1 * y1 - x; i++;
    sum += y2 * y2 - x; i++;
    do
    {
        y = 0.2 * sin(y0) - tan(y2) * tan(y2) + 1.5;
        sum += y * y - x;
        y0 = y1;
        y1 = y2;
        y2 = y;
        i++;
    }
    while (i <=2 * m);
    return (z - sum);
}
//recur2_end__________________________________________________________________________
//recur3_beg__________________________________________________________________________
//Вычисление значения суммы циклом FOR
double recur3 (int m, double y0, double y1, double y2)
{
    int i = 0;              //текущий номер слагаемого
    int x = (i - 5) / m;
    int z = m / 10;
    double y,               //очередное значение y[i]
        sum = 0;            //начальное значение суммы
    sum += y0 * y0 - x; i++;
    sum += y1 * y1 - x; i++;
    sum += y2 * y2 - x; i++;
    for (; i<= 2 * m; i++)
    {
        y = 0.2 * sin(y0) - tan(y2) * tan(y2) + 1.5;
        sum += y * y - x;
        y0 = y1;
        y1 = y2;
        y2 = y;
    }
    return (z - sum);
}
//recur3_end___________________________________________________________________________
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2019, 22:27
Ответы с готовыми решениями:

Деление с результатом без плавающей точки
Привет. Например есть код, в котором одно число делит другое. Числа генерируются с помощью rand();....

Не состыковка между результатом программы и результатом Excel
Даны натуральные числа N и M (N&gt;M). Вычислить S=\sum_{k-M}^{N}k^2\ln(k!) Вот код: //Задание 5...

Деление числа "напополам" с "целым" результатом
Доброго времени суток всем! Вот такая задача. Обращаюсь к базе SQL узнаю количество записей в...

Задача про деление яблок (целочисленное деление)
Ребят,помогите с задачкой,как написать input.txt и output.txt? Помогите решить задачу. C++....

5
1487 / 1414 / 240
Регистрация: 19.02.2010
Сообщений: 3,915
20.05.2019, 23:02 2
Цитата Сообщение от lSravRl Посмотреть сообщение
int x = (i - 5) / m;
int z = m / 10;
C++ (Qt)
1
2
double x = (((double)i) - 5) / m;
double z = ((double)m) / 10;
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
20.05.2019, 23:04 3
Цитата Сообщение от lSravRl Посмотреть сообщение
придрался к тому что (i - 5) / m и m / 10
И правильно придрался! Если хотите получить правильный результат от деления целых
C++
1
2
(double)(i-5)/m
m/10.0
Это разные способы получить нужный результат.А чтобы понять их смысл, надо немного прочитать про приведение типов
1
0 / 0 / 0
Регистрация: 23.11.2018
Сообщений: 7
20.05.2019, 23:09  [ТС] 4
Спасибо, пойду учить.

А по коду требуется заменит строки с объявлением int на указанные Вами? Я правильно понял?
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
20.05.2019, 23:15 5
Цитата Сообщение от lSravRl Посмотреть сообщение
А по коду требуется заменит строки с объявлением int на указанные Вами? Я правильно понял?
Не знаю, что именно вы поняли. На заменить надо саму операцию деления на то, что я показал.
1
0 / 0 / 0
Регистрация: 23.11.2018
Сообщений: 7
21.05.2019, 01:43  [ТС] 6
Спасибо за помощь. Пришел к такому варианту.


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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//Вариант 45. Для произвольного значения m вычислим значение суммы.
//Значения m, y0, y1, y2 вводится с клавиатуры.
//Значение yi вычисляется по формуле y[i]=0.2*sin(y[i-3])-tan^2(y[i-1]) +1.5,
//где i=3, 4, 5,...,m
 
#include <iostream>
#include <locale.h>
#include <cmath>
 
using namespace std;
double recur1 (double m, double y0, double y1, double y2);
double recur2 (double m, double y0, double y1, double y2);
double recur3 (double m, double y0, double y1, double y2);
 
//main begin __________________________________________________________________________
int main()
{
    int var;
    double m,
        re1, re2, re3,                  //результат решения задачи
        y0, y1, y2;                     //исходные данные
    setlocale(LC_ALL, "Russian");
    for (;;)
    {//Выбор действия
        cout << "\n Вид действия: " << endl;
        cout << " 1 - вычисление суммы по рекурентной формуле" << endl;
        cout << " 2 - завершение задачи" << endl;
        cout << " Введите вид действия => ";
        cin >> var;
        switch (var)
        {case 1:    //ввод исходных данных
            cout << "Введите значение m => ";
            cin >> m;
            cout << "Введите значения y0, y1, y2 => ";
            cin >> y0 >> y1 >> y2;
            re1 = recur1(m, y0, y1, y2);
            re2 = recur1(m, y0, y1, y2);
            re3 = recur1(m, y0, y1, y2);
    //Вывод результата
            std::cout.setf(std::ios::fixed);
            cout << " Для цикла WHILE результат     = " << re1 << endl;
            cout << " Для цикла DO..WHILE результат = " << re2 << endl;
            cout << " Для цикла FOR результат  = " << re3 << endl;
            break;
        default: return 1;
        }//switch
    }//for
}
    //main_end_____________________________________________________________________________
    //recur1_beg___________________________________________________________________________
    //Вычисление значения суммы циклом WHILE
double recur1(double m, double y0, double y1, double y2)
 
{
    double i = 0,           //текущий номер слагаемого
        sum = 0,            //начальное значение суммы
        y;                  //очередное значение y[i]
        
 
    sum += y0 * y0 - (i - 5) / m; i++;
    sum += y1 * y1 - (i - 5) / m; i++;
    sum += y2 * y2 - (i - 5) / m; i++;
    while (i <= 2 * m)
    {
        y = 0.2 * sin(y0) - tan(y2) * tan(y2) + 1.5;
        sum += y * y - (i - 5) / m;
        y0 = y1;
        y1 = y2;
        y2 = y;
        i++;
    }
    return ((m / 10) - sum);
}
//recur1_end_________________________________________________________________________
//recur2_beg_________________________________________________________________________
//Вычисление значения суммы циклом DO...WHILE
double recur2 (double m, double y0, double y1, double y2)
{
    double i = 0,           //текущий номер слагаемого
        sum = 0,            //начальное значение суммы
        y;                  //очередное значение y[i]
 
    sum += y0 * y0 - (i - 5) / m; i++;
    sum += y1 * y1 - (i - 5) / m; i++;
    sum += y2 * y2 - (i - 5) / m; i++;
    do
    {
        y = 0.2 * sin(y0) - tan(y2) * tan(y2) + 1.5;
        sum += y * y - (i - 5) / m;
        y0 = y1;
        y1 = y2;
        y2 = y;
        i++;
    }
    while (i <=2 * m);
    return ((m / 10) - sum);
}
//recur2_end________________________________________________________________________
//recur3_beg________________________________________________________________________
//Вычисление значения суммы циклом FOR
double recur3 (double m, double y0, double y1, double y2)
{
    double i = 0,           //текущий номер слагаемого
        sum = 0,            //начальное значение суммы
        y;                  //очередное значение y[i]
 
    sum += y0 * y0 - (i - 5) / m; i++;
    sum += y1 * y1 - (i - 5) / m; i++;
    sum += y2 * y2 - (i - 5) / m; i++;
    for (; i<= 2 * m; i++)
    {
        y = 0.2 * sin(y0) - tan(y2) * tan(y2) + 1.5;
        sum += y * y - (i - 5) / m;
        y0 = y1;
        y1 = y2;
        y2 = y;
    }
    return ((m / 10) - sum);
}
//recur3_end_________________________________________________________________________
0
21.05.2019, 01:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2019, 01:43
Помогаю со студенческими работами здесь

Умножение, деление и деление с остатком
Рассмотрим эти операции на примере. static void Main() { int i = 100, j = 15; double a =...

Деление знаковых чисел с выводом ошибки "Деление на ноль"
Собственно поставили передо мной задачу - написать прогу деления двух чисел, причем что бы...

[('2', (2,3,1), ('C', (3,3,1), ('2', (3,3,1), ('G', (1,1,1)] с результатом (3+3+1) + (1+1+1) = 10
Как просуммировать кортежи каждого второго элемента списка?

Задача по целым числам
Даны натуральные числа a1, ..., a10. Предположим, что имеются 10 гирь весом a1, ..., a10. Обозначим...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru