IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> цикл с накоплением с++, помогите исправить ошибку
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

Репутация: -  0  +


цикл от 10 до N. вычислить значение y=(k+3)/((k-5)*(k-7)).
n<10 результат одно и то же число =((



#include <stdio.h>
#include <cmath>
#include <iostream>

using namespace std;

int main()
{
int k,y,n;
cout<<"Vvedite N"<<endl;
cin>>n;
for(k=10;k<n;k--)
y=(k+3)/((k-5)*(k-7));
cout<<"y= "<<y<<endl;
cin.get();
cin.get();
}


Сообщение отредактировано: Formula -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






И где же здесь накопление? У тебя вычисляется y = (N+3)/((N-5)*(N-7)) ...

Теперь, почему получается 0: При N > 10 знаменатель больше числителя, целочисленное деление дает 0 (а в С++ два операнда целого типа делятся именно нацело, чтобы поделить их как вещественные числа, нужно хотя бы один операнд явно привести к float или любому другому вещественному типу)...

Сама справишься?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Formula @ 29.04.2010 1:56) *
цикл от 10 до N. вычислить значение y=(k+3)/((k-5)*(k-7)).
Неясно.. Вычислить таблицу значений, что ли?.. А при чем тут накопление тогда? Может, надо суммировать ряд?
Странно - вычислять значение выражения в цикле и тут же его забывать, а выводить только последнее..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Нет-нет... Так не пойдет... Я комментировал другой код... Там цикл был оформлен по другому. Здесь - ищи ошибку сама, у тебя цикл вообще не выполняется при N > 10...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

Репутация: -  0  +


не обещаю, что справлюсь, но попробую))

Добавлено через 2 мин.
blush.gif ой, да. вообще-то его нужно перемножать, но таблицу не нужно

Сообщение отредактировано: Formula -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(volvo @ 29.04.2010 2:36) *
Нет-нет... Так не пойдет... Я комментировал другой код... Там цикл был оформлен по другому. Здесь - ищи ошибку сама, у тебя цикл вообще не выполняется при N > 10...
угу, солидарен ))
исправления - в новые мессаджи, плз!


Добавлено через 8 мин.
Цитата(Formula @ 29.04.2010 2:36) *
ой, да. вообще-то его нужно перемножать, но таблицу не нужно
Если перемножать, то перед циклом присвой y=1, а потом домножай его в цикле на выражение.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

Репутация: -  0  +



как-то так?


#include <stdio.h>
#include <cmath>
#include <iostream>

using namespace std;

int main()
{
double k,y;
int n;
cout<<"Vvedite N"<<endl;
cin>>n;
y=1;
for(k=10;k<n;k++){
y=y*((k+3)/((k-5)*(k-7)));
}
cout<<"y= "<<y<<endl;
cin.get();
cin.get();
}



ещё бы проверочку на то, что n>10, но ничего, кроме goto(что б по быстрому ибо выключает уже) придумать не могу. может согрешить? blush.gif

Сообщение отредактировано: Formula -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Formula @ 29.04.2010 3:06) *
ещё бы проверочку на то, что n>10, но ничего, кроме goto(что б по быстрому ибо выключает уже) придумать не могу. может согрешить? blush.gif
Как ты, однако, легко грешишь... надеюсь, не во всем )).
  do {
cout<<"Vvedite N>10"<<endl;
cin>>n;
} while (n<=10);

Так, что ли?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Formula
Стесняюсь спросить... А почему там строго "меньше N"? В условии же написано
Цитата
цикл от 10 до N
, а не до N - 1...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

Репутация: -  0  +


почему меньше? больше 10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Цитата
     for(k=10;k<n;k++){ // <--- Здесь
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

Репутация: -  0  +


я запуталась что, куда и к чему(((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






У тебя в задании сказано:
Цитата
цикл от 10 до N. вычислить значение
. Теперь смотри, что делаешь ты: Вводишь N. Допустим, 15. Начинаешь цикл... Для каких k он отработает? Для k = 10, 11, 12, 13, 14... Всё. Точка... Где вычисление при k = 15? Ведь это как раз и есть то самое N, и его тоже надо считать...

Это первое. Второе: никогда больше не делай так, как ты сделала выше. Очень опасно применять ++ к вещественному числу. А получится у тебя после первого ++ не 11, а 10.999999999 - оно тебе надо? Цикл for - это цикл с заданным количеством повторений, а количество - это целое число...

    double y = 1.0;
for(int k = 10; k <= n; k++)
{
y = y * ((double)(k+3) / ((k-5)*(k-7)));
}

Ничего сложного, правда?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

Репутация: -  0  +


спасибо)) всё ясно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 6:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name