Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Задача на циклические алгоритмы

Автор: Sensitive 3.10.2007 23:32

Здравствуйте!
Только начинаю изучать СИ...и сразу же "прокололась" на простой задаче. ПОмогите пожалуйста...
Задача такая:
Найти сумму приведенного выражения.
y=∑(от n=1 до k) n/(n*n+2*n+7);
вот, что я сделала, зная как это реализовать на Паскале:

#include <conio.h>
#include <math.h>
#include <iostream.h>
#include <stdio.h>
void main()
{clrscr();
int n,k;
double y;
cout<<"Vvedite k:";
cin>>k;
y=0;
for (n=1;n<=k;++n) {y=y+n/(n*n+2*n+6);}
cout<<"y="<<y;
getch();
}

но y поллучается всегда равным 0...

Автор: volvo 3.10.2007 23:40

В С тип результата операции деления такой же, как и типы операндов... Поскольку ты делишь целое на целое, то в результате дробная часть отсекается и... остается ноль...

Как исправить? Любым способом привести или числитель или знаменатель к double... Можно так:

y=y+(double)n/(n*n+2*n+6);

можно - вот так:
y=y+n/(n*n+2*n+6.0); // <-- обрати внимание на 6.0: это - уже double


Можно еще десятком способов...

Автор: Sensitive 3.10.2007 23:46

volvo, огромное спасибо. Выручил! Думаю, теперь запомню про типы операндов и результатаsmile.gif