1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Функция, Решающая Квадратное Уравнение

Тема в разделе "C/C++/C#", создана пользователем ShiroKuro, 4 июн 2012.

  1. ShiroKuro

    ShiroKuro Гость

    Репутация:
    0
    помогите пожалуйста нужно: напишите функцию, решающую квадратное уравнение вида a(x)^2+bx+c=0. Функция должна возвращать количество (через тип возврата) и значения (через аргументы) действительных корней уравнения.
    Как известно, квадратное уравнение будет иметь действительные корни, если его дискриминант будет неотрицательным, т.е. когда D=b^2-4ac≥0
    x=(-b±√D)/2a
    помогите пожалуйста!!!

    код Си.

    попытка с функцией...не работает...
    PHP:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    int kvadur(double a,double b,double c,double *x1,double *x2)
    {
    double d;
    if(
    a==0)//не квадратное уравнение
    {
    if(
    b!=0){*x1=-c/b;return 1;}
    else if(
    c!=0)return 0;//нет корней
    else return -1;//бесконечно много корней
    }
    d=(b*b)-(4*a*c);
    if (
    0) return 0;
    if (
    == 0) {*x1=-b/(2*a);return 1;}
    *
    x1 = (-b+sqrt(d))/(2*a);
    *
    x2 = (-b-sqrt(d))/(2*a);
    return 
    2;

    int main(void
    {
    double a,b,c,x1,x2;
    printf("a, b, c = ");
    scanf("%%lf%%lf%%lf", &a, &b, &c);
    a,b,c,x1,x2 kvadur(a,b,c,&x1,&x2);
    printf("x1=%lf x2=%lf",x1,x2);
    getch(); 
    return 
    0;
    }
     
  2. Araneus

    Araneus Гость

    Репутация:
    0
    Похоже, что напартачили в этой строчке. Вы пяти разным переменным присваиваете одно и тоже значение.
     
  3. Araneus

    Araneus Гость

    Репутация:
    0
    Я бы сделал так:

    Код:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    //-------------------------------
    // Собственно, функция, которая решает уравнение
    //-------------------------------
    int solve (float a, float b, float c, float *x1, float *x2)
    {
    float D;
    D=b*b-4*a*c;
    if (D>0) 
    {
    *x2=(b-sqrt(D))/(-2*a);
    *x1=(b+sqrt(D))/(-2*a);
    return 2; // 2 корня
    } else if (D==0)
    {
    *x1=b/(-2*a);
    *x2=*x1;
    return 1; // корень 1
    } else return 0;
    // корни принадлежат множеству комплексных чисел;
    // натуральных корней нету;
    }
    //--------------------------------
    // Сама прога
    //--------------------------------
    void main ()
    {
    float A,B,C,X1,X2;
    A=0.0;
    for (;A==0.0;) // пользователь будет вводить коэфициенты до тех пор, пока это не будет действительно квадратное уравнение
    {
    clrscr(); // чистим экран, если это не первая попытка
    printf("Enter the A, B and C for equation:\tAx^2+bx+c=0:\nA have to be not equal 0, else you have to reenter conditions\n\t");
    scanf("%f %f %f", &A, &B, &C);	// считываем
    }; 
    
    switch (solve(A,B,C,&X1,&X2)) // зависимо от количества корней выводим:
    {
    case 1: 
    {
    printf("\nX1=X2=\t%f",X1);
    break;
    };
    case 2: 
    {
    printf("\nX1=%f X2=%f",X1,X2);
    break;
    };
    default : 
    {
    printf("\nThere are no real solutions. They are complex");
    break;
    };
    };
    getch();	// ждем пока пользователь полюбуеться на это всё и нажмёт 
    //любую клавишу
    };
     
Загрузка...

Поделиться этой страницей