Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Magmicha
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 20
1

Составить функцию для решения уравнения

21.11.2014, 11:42. Просмотров 674. Ответов 1
Метки нет (Все метки)

Пользователь вводит три вещественных числа: a,b,c. Составить функцию для
решения уравнения (x+a)/(x+b)=сx, которая получает введенные числа в качестве
параметров. Найденные корни уравнения функция возвращает в качестве двух других
параметров.
Результат, который возвращает сама функция, должен позволять отслеживать
следующие случаи (зависящие от значений введенных чисел): уравнение имеет только
один корень, нет вещественных корней, корни одинаковые, деление на нуль.

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void qvadr(float a, float b, float c){ float d,x1,x2;
        d=(c*b-1)*(c*b-1)+4*c*a;
        if (d>0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);
                  x2=(-b-sqrt(d))/(2*a);printf("%f",x2);
                  }
        if (d=0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);  }
        if (d<0) printf("net kornei");
    }
не могу понять про то что функция должна возращать результат. как это надо писать7
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 11:42
Ответы с готовыми решениями:

Написать функцию решения квадратного уравнения
мне нужно написать функцию решения квадратного уравнения можно ли чтоб функция...

Программа для решения уравнения x^2=sinx+1
Как мне объявить функцию F=x^2-sin(x)-1 При F(x)=0

Функция для решения квадратного уравнения
Описать функцию RootsCount(A, B, C) целого типа, определяющую количество корней...

Улучшить программу для решения уравнения методом Гаусса
В общем, есть код для обычного решения уравнения, но мне требуется улучшить,...

Напишите программу для решения квадатного уравнения, если коэфициэнт при x^2 равен 0
Народ это моя первая программа на С помогите пожалуйста отладить а то чем...

1
easybudda
Модератор
Эксперт CЭксперт С++
10148 / 6055 / 1522
Регистрация: 25.07.2009
Сообщений: 11,476
22.11.2014, 05:23 2
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdio.h>
#include <math.h>
 
#define EPS ( 1.0e-6 )
 
enum RESULT { R_NO_ROOTS, R_ONE_ROOT, R_TWO_ROOTS, R_DIV_ZERO, R_BAD_PARAM };
 
#define good_root(x, a, b, c) ( ( fabs((x) + (b)) >= EPS ) && ( fabs(((x) + (a)) / ((x) + (b)) - (x) * (c)) < EPS ) )
 
int equation(const double _a, const double _b, const double _c, double * pX1, double * pX2) {
    double a = _c;
    double b = _c * _b - 1.0;
    double c = -1.0 * _a;
    double d = b * b - 4.0 * a * c;
    int first = 0, second = 0;
    
    if ( fabs(a) < EPS )
        return R_BAD_PARAM;
    
    else if ( d < 0.0 )
        return R_NO_ROOTS;
    
    else if ( fabs(d) < EPS ) {
        *pX1 = ( -1.0 * b ) / ( 2.0 * a );
        return ( fabs(*pX1 + _b) < EPS ) ? R_DIV_ZERO : ( fabs((*pX1 + _a) / (*pX1 + _b) - *pX1 * _c) < EPS ) ? R_ONE_ROOT : R_NO_ROOTS;
    }
    
    else {
        *pX1 = ( -1.0 * b - sqrt(d) ) / ( 2.0 * a );
        *pX2 = ( -1.0 * b + sqrt(d) ) / ( 2.0 * a );
        
        first = good_root(*pX1, _a, _b, _c);
        second = good_root(*pX2, _a, _b, _c);
        
        if ( first ) 
            return ( second ) ? R_TWO_ROOTS : R_ONE_ROOT;
        
        else if ( second ) {
            *pX1 = *pX2;
            return R_ONE_ROOT;
        }
    }
 
    return R_NO_ROOTS;
}
 
int main(void) {
    double a, b, c, x1, x2;
    
    while ( printf("Enter space separated A, B and C: ") && scanf("%lf %lf %lf", &a, &b, &c) == 3 ) {
        switch ( equation(a, b, c, &x1, &x2) ) {
            case R_BAD_PARAM :
                printf("Parameter C can't be ZERO.\n");
                break;
            case R_NO_ROOTS :
                printf("No roots for given parameters.\n");
                break;
            case R_DIV_ZERO :
                printf("The only root cause zero division.\n");
                break;
            case R_ONE_ROOT :
                printf("Just one root: %f\n", x1);
                break;
            case R_TWO_ROOTS :
                printf("First root: %f\nSecond root: %f\n", x1, x2);
                break;
            default :
                fprintf(stderr, "Unknown error!\n");
                return 1;
        }
    }
    
    return 0;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2014, 05:23

Составить программу для решения примеров
Правила форума

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

Составить программу для решения поставленной задачи оформив подзадачи ввиде функций
Составить программу для решения поставленной задачи оформив подзадачи ввиде...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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