Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 02.03.2014, 20:07   #1 (permalink)
steamangarsk
Member
 
Регистрация: 28.12.2012
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Ошибка в счёте

Ошибка где то в коде, считает неправильно столбец f... Помогите найти эту ошибку и исправить... Я так понимаю эта ошибка в цикле где считается f, но не знаю как исправить... Задание такое: Вычислить значения суммы ряда S при заданных с консоли начальном и конечном значениях аргумента x (x_nach, x_kon), шаге его изменения delta_x и точности вычислений eps. Вычисленные значения ряда сравнить со значениями заданной функции f(x). Результаты вычислений вывести в виде таблицы с заголовком. Срочно нужно, помогите кто может...
Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
 
int main()
{
    float x, s, f, x_nach, x_kon, delta_x, eps, temp;
    int n;
 
    printf("\nlaboratornaya rabota №3");
    printf("\nvariant №8");
    printf("\nIS-12-2");
    printf("\nHamchuk Evgeniy\n");
 
    printf("\ninitial data input:\n");
    printf("\nx_nach=");
    scanf("%f", &x_nach);
    printf("\nx_kon=");
    scanf("%f", &x_kon);
    printf("\ndelta_x=");
    scanf("%f", &delta_x);
    printf("\neps=");
    scanf("%f", &eps);
 
 
    printf("\nfor  x=%5.3f  to  %5.3f  increments  %5.3f  and precision  %5.3f\n", x_nach, x_kon, delta_x, eps);
 
    printf("\n   x      n         s            f");
    printf("\n--------------------------------------");
    x = x_nach;
 
    do
    {
        temp=x;
        s=0.0;
        n=1.0;
 
        double f=0.0;
 
        if((x<0.0) && (x>=-1.0))
        {
        f=M_PI/2.0+atan(sqrt(1.0-x*x/x));
        }
        else if((x>0.0) && (x<=1.0))
        {
        f=atan(sqrt(1.0-x*x)/x);
        }
 
 
        while(fabs(temp)>eps)
        {
            s+=temp;
            temp*=-x*x*(2.0*n-1.0)*(2.0*n-1.0)/((2.0*n)*(2.0*n+1.0));
            n++;
        }
 
            printf("\n%5.3f     %d     %0.6f     %0.6f", x, n, s, f);
            x += delta_x;
 
        }
        while(x<=x_kon);
        printf("\n--------------------------------------");
        return 0;
 
    }
Миниатюры
aacuiyiiue.png  
steamangarsk вне форума   Ответить с цитированием

Старый 02.03.2014, 20:07
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Люди уже создавали подобные топики на нашем форуме

Ошибка
Ошибка HDD
Ошибка 629

Старый 03.03.2014, 01:10   #2 (permalink)
Николай_С
Member
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 22,242
Записей в дневнике: 7
Сказал(а) спасибо: 233
Поблагодарили 201 раз(а) в 63 сообщениях
Репутация: 86561
По умолчанию

Объясните пожалуйста вот эту строку:
Код:
 double f=0.0;
Зачем понадобилось float f обнулять с двойной точностью?
Николай_С вне форума   Ответить с цитированием
Старый 03.03.2014, 16:24   #3 (permalink)
steamangarsk
Member
 
Регистрация: 28.12.2012
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

да проблема то не в этом... даже если убрать эту строку все равно также считает...
steamangarsk вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:05.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.