* Линейно и квадратно уравнение

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

Публикувано в 10в, 11а, 11в с етикети . Постоянна връзка.

4 коментара по * Линейно и квадратно уравнение

  1. kaloyan каза:
    VAR x,x2:real;
    
    function lineino(a,b:integer):integer;
    begin
      if a=0 then
        if b=0 then
          result:=0//Всяко x е решение
        else result:=1//Няма решение
      else
      begin
        result:=2;//има решение
        x:=-b/a;
      end;
    end;
    
    function kvadratno(a,b,c:integer):integer;
    var D:integer;
    begin
      D:=b*b-4*a*c;
        if D<0 then result:=0//Уравнението няма реални корени
          else
        if D=0 then begin
          result:=1;//Уравнението има един реален корен
          x:=-b/2*a;
        end
          else
        begin
          result:=2;//Уравнението има два реални корена
          x:=(-b+sqrt(D))/(2*a);
         x2:=(-b-sqrt(D))/(2*a);
        end;
    end;
    
    VAR a,b,c:integer;
    BEGIN
    write('Vavedi a,b i c: '); readln(a,b,c);
    //Линейното уравнение
      if lineino(a,b)=0 then writeln('Vsqko x e reshenie')
        else
      if lineino(a,b)=1 then writeln('Nqma reshenie')
        else writeln('x=',x:0:2);
    //Квадратното уравнение
      if kvadratno(a,b,c)=0 then writeln('Uravnenieto nqma realni koreni')
        else
      if kvadratno(a,b,c)=1 then writeln('x1:=',x:0:2)
        else
      if kvadratno(a,b,c)=2 then begin
        writeln('x1=',x:0:2);
        writeln('x2=',x2:0:2);
      end;
    
    readln;
    END.
    • Данаил каза:

      Функциите са по принцип верни, сетил си се да разгледаш всички случаи, браво! Само че 1) е по-удачно корените да се връщат като изходящи параметри, а не чрез глобални променливи и 2) функциите за линейно и квадратно уравнение да се викат еднократно и после да се ползва резултата им, а не пак и пак да ги извикваш във всеки if.

  2. marant каза:
     
     #include <cstdlib>
    #include <iostream>
    #include <math.h>
    using namespace std;
    
    int kv(int a, int b, int c,double &x1, double &x2){
    int D;
         D=(b*b)-4*a*c;
                   if(D<0){
                           return 0;
                           }
                   if(D==0){
                           x1=((-b)/(2*a));
                           return 1;
                           }
                   if(D<0){
                          x1=(-b+(sqrt(D)))/(2*a);
                          x2=(-b-(sqrt(D)))/(2*a);
                          return 2;
                          
                          }
    }
    int lin(int a, int b, double &x) { x=0;
            if(a==0){
                if(b==0){
                    return 0; //vsqko x e reshenie
                }
            
                else return 1; //nqma reshenie
            }
            else { x=-b/a; return 2;} //ima reshenie 
    }
    
    int main(int argc, char *argv[])
    {
        int a,b,c;
        double x1,x2;
            cout<<"Vuvedi 4islata a,b,c: ";
            cin>>a>>b>>c;
        if(a==0)
            cout<<"ima : "<<lin(b, c, x1)<<" resheniq i to e:"<<x1<<endl;
        else {
            int br=kv(a, b, c, x1 ,x2);
            if(br==0){
                cout<<"Nqma re6enie."<<endl;
                     }
            if(br==1){
                cout<<"ima 1 reshenie i to e: "<<x1<<endl;
                     }
            if(br==2){
                cout<<"ima 2 resheniq i te sa: "<<x1<<" "<<x2<<endl;    
                     }
            }
        system("PAUSE");
        return EXIT_SUCCESS;
    
    • Данаил каза:

      Браво, решение като по учебник! Само за случаите, в които се получава линейно уравнение и няма решение или всяко x е решение трябва малко да шлифоваш какво ще се отпечатва в main функцията.

Вашият коментар