Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 17:11   #1
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию проблемка(

Недавно написал программку, выполняющую вычисление ln(x+1) по формуле (-1)^(n+1)*(X^n)/n. Задача заключалась в том, чтобы выполнять суммирование до тех пор, пока очередное слогаемое (d) не станет меньше заданного числа eps=0.0001.
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>

float step(float a, int b) {
float c=a ;
for (int i=2 ; i<=b ; i++) {c*=a ;}
return (c) ;
}

int main ()
{
float x, n=1, d=1, s, eps=0.0001;
for (x = -0.5 ; x<=0.5 ; x+=0.1) {
while (fabs(d)>eps) {d=step(-1, n+1)*step(x, n)/n ;
		     s+=d ;}
printf("%1.1f  %6f  %6f \n", x ,log(1+x), s) ;
s=0 ; d=1; n=1 ;
}
getch() ;
return(0) ;
}
при попытке запустить её, компиль виснет, не выдавая никаких ошибок... Остальные программки компилятся нормально, пробовал запустить на другом компьютере, с другим компилем - та же ситуация. Подскажите пожалуйста, в чём проблема..
Alexcomeback вне форума
Старый 16.04.2009, 17:47   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Код:
for (x = -0.5 ; x<=0.5 ; x+=0.1)
в этом цикле попробуйте уменьшить шаг
MaTBeu вне форума
Старый 16.04.2009, 18:14   #3
Pashan
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 89
По умолчанию

Во-первых, ты не обнуляешь переменную s, так что получишь фигню. Но зацикливается не из-за этого. Зацикливается из-за того, что ты не изменяешь значение n внутри цикла while. Кстати, n было бы неплохо сделать типа int, а не float.
Pashan вне форума
Старый 16.04.2009, 18:36   #4
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Pashan Посмотреть сообщение
Во-первых, ты не обнуляешь переменную s, так что получишь фигню. Но зацикливается не из-за этого. Зацикливается из-за того, что ты не изменяешь значение n внутри цикла while. Кстати, n было бы неплохо сделать типа int, а не float.
аааа действительно, в теле while забыл n++.... Прописал, всё заработало как надо)) Спасибо огромное!

p.s. А S я обнуляю
Код:
.......
.......
printf("%1.1f  %6f  %6f \n", x ,log(1+x), s) ;
s=0 ; d=1; n=1 ;
.......
Alexcomeback вне форума
Старый 16.04.2009, 18:38   #5
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Код:
for (x = -0.5 ; x<=0.5 ; x+=0.1)
в этом цикле попробуйте уменьшить шаг
по условию шаг должен быть именно таким
Проблемка устранена, всем спасибо за помощь и внимание к моему полунупскому творчеству
Alexcomeback вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемка с Frame. blackstersl Общие вопросы Delphi 2 03.08.2009 14:05
pagecontrol проблемка [koyot] Общие вопросы Delphi 3 29.01.2009 06:39
Проблемка поможите AlyCard Компьютерное железо 4 11.09.2008 22:26