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

Функции. Не считает последнюю итерацию в цикле - C++

Восстановить пароль Регистрация
 
4ch
19 / 19 / 0
Регистрация: 24.10.2012
Сообщений: 72
17.06.2013, 21:30     Функции. Не считает последнюю итерацию в цикле #1
Добрый вечер. Не могу понять, почему в цикле не считает 12 итерацию. Ниже строка с комментарием.

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 <stdlib.h>
#include <conio.h>
using namespace std;
 
double qxx(double x, double result)
{
    int i;
    double qi = 0;
    result = 1;
    for (i = 1; i <= 12; i++)
    {
        result = result + (qi * x) / i;
        qi = (i * i - 1) / 12;                      // Если подставить 12, выдаст значение 11 (выводил qi отдельно). Я думаю,           что -1 каким-то образом уменьшает i на 1, но не понимаю почему.
    }
    return result;
}
 
void main()
{
 locale loc("russian_Russia.1251"); 
 locale::global(loc); 
 double w, f1 = 0, f2 = 0, x;
 cout<<"Введите значение x-> "; cin >> x;
 
 system("cls");
 w = qxx(x, f1) + qxx(x + 5, f2);
 
 
   cout<<endl;
   cout << "Введенные значения( x= "<<x<<")"<<endl;
   cout << "Результат w= "<<w;
 _getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.06.2013, 21:38     Функции. Не считает последнюю итерацию в цикле #2
Цитата Сообщение от 4ch Посмотреть сообщение
Если подставить 12, выдаст значение 11 (выводил qi отдельно).
(12*12-1) / 12 =11
4ch
19 / 19 / 0
Регистрация: 24.10.2012
Сообщений: 72
17.06.2013, 21:42  [ТС]     Функции. Не считает последнюю итерацию в цикле #3
Цитата Сообщение от Thinker Посмотреть сообщение
(12*12-1) / 12 =11
144-1/12 ~11,9

Может я не так думаю и вы подскажете, как правильно?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.06.2013, 21:52     Функции. Не считает последнюю итерацию в цикле #4
(12*12-1) / 12 =11
(12*12-1) / 12.0 =11.9...

почувствуйте разницу. в первом случае целочисленная арифметика, во втором - действительная

Добавлено через 9 минут
просто обращайте внимание на то, что
1 / 2 = 0,
но
1.0 / 2 = 1 / 2.0 = 1.0 / 2.0 = 0.5

у вас i целочисленная переменная, вот и целочисленная арифметика
Yandex
Объявления
17.06.2013, 21:52     Функции. Не считает последнюю итерацию в цикле
Ответ Создать тему
Опции темы

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