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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2011, 22:07   #1
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию Нахождение числа pi

Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(){
  double P1,P2,Pi1,Pi2,R,eps,n;
	clrscr();
	printf("eps=");
	scanf("%f", &eps);
	printf("%f", eps);
	R=1;
	P1=4*sqrt(2.0)*R;
	//printf("%.12f",P1);
	n=2;
	do{
	  P1=exp((n+1)*log(2))*R*sqrt(2-sqrt(4-P1*P1/(exp(2*n*log(2))*R*R)));
	  Pi1=P1/(2*R);
	  P2=exp((n+2)*log(2))*R*sqrt(2-sqrt(4-P1*P1/(exp(2*(n+1)*log(2))*R*R)));
	  Pi2=P2/(2*R);
	  n=n+1;
	}
	while (abs(Pi2-Pi1)>eps);
	printf("Pi=%f",Pi2);
	getch();
	return 0;
}
Господа, уже не знаю что не так, попросили задачку решить, а она и не идет Не пойму в чем дело пишет overflow при возведении в степень Будут советы, наверняка я просто туплю
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 27.11.2011, 23:31   #2
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

А до какого символа то ?

Код:
#include <iostream>

using namespace std;

int main ()
{
	double p = 22.0/7.0;
	cout << "Pi: " << p;

	cout << "\n";
	system ("pause");
}
L6go1as вне форума Ответить с цитированием
Старый 28.11.2011, 15:58   #3
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

pi вычисляем до заданного нами e - погрешность, число знаков после запятой думаю. Надо вычислять именно тем способом, что я изложил через вписанные окружности.
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 28.11.2011, 16:21   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

А где именно выскакивает ошибка?
Проверил код у себя -- все работает. Правда, я сделал переменные long double и поменял формат вывода, но тем не менее...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 28.11.2011, 19:48   #5
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,692
По умолчанию

Код:
scanf("%f", &eps);
printf("%f", eps);
double это "%lf" logn double это "%Lf", ну а float "%f"
У меня программа работает, но pi считает неверно.
______
Хех, c lf походу напутал..., ну да ладно^^
______
Упс, уточнил, для scanf %lf критично
______
Фигасе:
Цитата:
C:\Users\kostia\Documents\Projects\ test\main.cpp|31|warning: format '%f' expects argument of type 'float*', but argument 2 has type 'double*' [-Wformat]|
MinGW(GCC 4.6)

Последний раз редактировалось Kostia; 28.11.2011 в 20:12.
Kostia вне форума Ответить с цитированием
Старый 30.11.2011, 23:25   #6
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Думаю тут дело не в формате, а в чем то ином. Ошибка при возведении в степень.
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нахождение цикломатического числа Pavel1992 Общие вопросы C/C++ 1 28.10.2010 18:21
Нахождение хроматического числа Pti44ka Общие вопросы .NET 0 05.05.2010 16:13