Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
drtork
2 / 2 / 0
Регистрация: 26.09.2009
Сообщений: 29
#1

Вычисление значений функции - C++

01.10.2009, 20:15. Просмотров 659. Ответов 4
Метки нет (Все метки)

Есть вот такой код на Си. Вопрос: как обработать ситуации, которые описаны в цикле while? Т.е. нужно, чтобы прога не просто отказывалась вычислять функцию "от большего к меньшему", при отрицательном или нулевом шаге, а вычисляла, например, при подобном задании пределов всё корректно, но, скажем, в обратном порядке...а при нулевом шаге и\или равных пределах - только одно значение функции... Буду признателен, если кто-нибудь подскажет что и как...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
        FILE *fp;
        double y, x1, x2, a, b;
        if((fp = fopen("C:\\res.txt", "w")) == NULL)
                {
                 perror("C:\\res.txt");
                 return 1;
                }
        while(a>=b || x2<=0)
                {
                 printf("Vvedite shag i predely a i b:\n");
                 scanf("%lf%lf%lf", &x2, &a, &b);
                }
        printf("Znachenie funkcyi na otrezke ot %.*f", 2, a);
        printf(" do %.*f", 2, b);
        printf(" s shagom %.*f", 2, x2);
        printf(" ravno:\n");
        for (x1=a; x1<=b; x1+=x2)
                {
                 y=pow(5,(x1+1))+pow(5,x1)+pow(5,(x1-1));
                 printf(" Resultat: %.*f\n", 2, y);
                 fprintf(fp, " Resultat: %.*f\n", 2, y);
                }
        //getch();
        fclose(fp);
        printf("Vvedite x:\n");
        scanf("%lf", &x1);
        y=pow(5,(x1+1))+pow(5,x1)+pow(5,(x1-1));
        printf(" Resultat: %.*f\n", 2, y);
        getch();
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2009, 20:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление значений функции (C++):

Вычисление таблицы значений заданной функции для N значений X в заданном интервале - C++
составить алгоритм и программу вычесления таблицы значений заданной функции для N значений X, меняющихся от Xнач с заданным шагом HX, и M...

Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции - C++
Составить программу решения поставленной задачи: Вычислить m значений функции f(x) на отрезке . Вычисление величины f(x) оформить в виде...

Вычисление значений функции - C++
Доброго времени суток! Помогите с одной задачей.Надо построить таблицу значений(функция y=ln(x/(x-2))). Если в некоторой точке x функция...

Вычисление значений функции - C++
Тема: «Программирование циклических алгоритмов» Для решения задачи использовать операторы for, while, do 1 Вычисление значений...

Вычисление значений функции - C++
Составить программу для вычисления значений заданной функции, используя исходные данные:

Вычисление значений периодической функции - C++

4
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.10.2009, 20:26 #2
сразу после ввода:

C++
1
2
3
4
if (a > b){
    ::swap (a,b);
}
c = ::abs (c);
а дальше все как обычно.
0
odip
Эксперт С++
7157 / 3219 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
01.10.2009, 20:29 #3
Покажи форумулу для вычисления самой функции или оригинальное задание.
А то гадать правильно ли ты вообще написал не хочется.
0
drtork
2 / 2 / 0
Регистрация: 26.09.2009
Сообщений: 29
01.10.2009, 22:27  [ТС] #4
Формула: y=pow(5,(x1+1))+pow(5,x1)+pow(5,(x1-1)) Не нашёл как здесь это писать в "обычном виде", ну вобщем y=(5^(x+1))+(5^x)+(5^(x-1)).. не знаю как ещё написать)) А написано всё правильно(билдер всё компилит и считается функция правильно(вручную перепроверил), в файл сохраняет и т.д.).
Цитата Сообщение от novi4ok Посмотреть сообщение
C++
1
2
3
4
if (a > b){
 ::swap (a,b);
}
c = ::abs (c);
я так понимаю, здесь просто a и b меняются местами, а "с" берётся по модулю, да? а вот как этим пользоваться что-то непойму? мы же не можем просто вызвать ф-цию, нигде не описаную...гдето ж должен быть прототип, или я недогоняю чего-то? а с "c = ::abs (c)" разобрался - работает - спасибо)))
0
odip
Эксперт С++
7157 / 3219 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
01.10.2009, 23:19 #5
Тут можно прямо в форум выложить картинку с форумулой.

Добавлено через 5 минут
for (x1=a; x1<=b; x1+=x2)
Если a == b, то программа и так должна вычислять только одно значение.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2009, 23:19
Привет! Вот еще темы с ответами:

Вычисление значений функции на заданном интервале - C++
F(x)=2cosx-1 на отрезке с шагом h мучаюсь, с этим не получается, надо While, for , do while. очень прошу)

Цикл: Вычисление значений заданной функции - C++
Помогите на С++

Вычисление значений функции разложением в ряд - C++
Дали лабу по определению точности. Может кто помочь написать программу так как у меня всегда выходит не так, как нужно. ( В примере...

Вычисление значений кусочно заданной функции - C++
Найдите ошибки. Составить схему алгоритма и программу вычисления функции y=f(x) используя оператор условной передачи управления -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
01.10.2009, 23:19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru