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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 23:36   #1
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию Неточный результат

Здравствуйте.
задачаЖ Написать программу вычисления значения выражения:

при заданных значениях х и n. (n-натуральное число, 0 < n < 10000, x-вещественное).
но высчитывает не верно.. к примеру.. при вводе 0.5 1000 должно выводить 97.58344, а выводит 97.58337
из-за етого задача незасчитывается...
Помогите найти ошибку, пожалуйста.

Код:
#include <stdio.h>
#include <math.h>
int main()
{
	FILE *f;
	int n;
	float x;
	f=fopen ("input.txt","r");
	fscanf(f,"%f %d",&x, &n);
	fclose(f);
	f=fopen("output.txt","w");
	float sum=0;
    	
	while((n>0)&&(n<10000)) 
	{
		x=sin(x); // sin nayden
		sum=sum+x; //sum+ x 
		n--;
	}
	fprintf(f,"%.5f", sum);
	
	fclose(f);
	return 0;
}
Изображения
Тип файла: bmp lab6task4.bmp (13.8 Кб, 127 просмотров)
Anohorett вне форума Ответить с цитированием
Старый 10.12.2009, 01:24   #2
Pashan
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 89
По умолчанию

Поменяй типы x и sum с float на double. И будет тебе счастье
Еще в fscanf, наверно, надо будет поставить не %f, а %lf.
Pashan вне форума Ответить с цитированием
Старый 10.12.2009, 13:03   #3
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию

Pashan, спасибо, помогло.
Anohorett вне форума Ответить с цитированием
Старый 12.12.2009, 18:52   #4
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию

Только вот снова вопрос... уже по другой задаче... ситуация аналогична снова не точный результат...
Задача. Не используя стандартные функции (за исключением ABS), вычислить с точностью Eps:

Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше Eps, все последующие слагаемые можно уже не учитывать.

Код:
#include <stdio.h>
#include <math.h>
int factorial(int a)// funcion factorial
{
int f=1;
for(int i=1; i<=a; i++)
{
f=f*i;
}
return(f);
}
//----------------------------------------
int main()
{
FILE *f;
double x, eps;
f = fopen("input.txt","r");
fscanf(f,"%lf %lf", &x, &eps);
fclose(f);
double b=1.0;
//------------------------------------------
int p;
for(p=1; pow(x,p)/factorial(p)>eps; p++)
{
b=b+pow(x,p)/factorial(p);
}
//--------------------------------------------
f = fopen("output.txt","w");
fprintf(f, "%.5lf", b);
fclose(f);
return 0;
}
Изображения
Тип файла: bmp lab6task5.bmp (11.9 Кб, 128 просмотров)
Anohorett вне форума Ответить с цитированием
Старый 12.12.2009, 18:56   #5
Anohorett
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 21
По умолчанию

Пример ввода:
1 0.001
должно вывести 2.71825, а выводит 2.71806
Anohorett вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
результат запроса Ko$tello БД в Delphi 7 18.04.2012 12:13
Неожиданный результат megachuhancer Общие вопросы Delphi 8 17.08.2009 00:08
Запрос на неточный поиск Brook SQL, базы данных 6 05.05.2009 10:53
Не тот результат! Dawystrik Общие вопросы Delphi 3 22.03.2009 09:50
Результат прогресса Stilet Свободное общение 10 15.04.2008 13:03