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

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

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

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

Изначально преподаватель придрался к тому что (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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2019, 22:27
Ответы с готовыми решениями:

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

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

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

5
2619 / 1630 / 266
Регистрация: 19.02.2010
Сообщений: 4,324
20.05.2019, 23:02
Цитата Сообщение от 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
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
20.05.2019, 23:04
Цитата Сообщение от 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  [ТС]
Спасибо, пойду учить.

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


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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2019, 01:43
Помогаю со студенческими работами здесь

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

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

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

[('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. Обозначим через сk число способов, которыми можно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru