• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Ошибка в счёте

steamangarsk

Новые
Регистрация
28 Дек 2012
Сообщения
20
Реакции
0
Баллы
0
Ошибка в счёте

Ошибка где то в коде, считает неправильно столбец 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;
 
    }
 

Вложения

  • Безымянный.webp
    Безымянный.webp
    7.1 KB · Просмотры: 61
Объясните пожалуйста вот эту строку:
Код:
 double f=0.0;
Зачем понадобилось float f обнулять с двойной точностью?
 
да проблема то не в этом... даже если убрать эту строку все равно также считает...
 
Назад
Сверху