Witamy na Delphi - forum dla programistów, webmasterów i grafików
+ Odpowiedz na ten temat
Pokaż wyniki od 1 do 2 z 2
  1. #1

    Dziwny błąd...

    Kod:
    #include <iostream>
    using namespace std;
    
    #include <stdlib.h>
    #include <math.h>
    
    float main()
    {
    cout << "a = ";
    int wa;
    cin >> wa;
    
    cout << "b = ";
    int wb;
    cin >> wb;
    
    cout << "c = ";
    int wc;
    cin >> wc;
    int delta;
    delta = wb*wb-4*wa*wc;
    cout << "Funkcja " << wa <<"x^2+" << wb <<"x+" << wc <<"=0";
    if (delta>0)
    {
        float w1 = (-1*wb-1*( sqrt(delta)))/(2*wa);
        float w2 = (-1*wb+( sqrt(delta) ))/(2*wa);
        cout << "Ma 2 miejsca zerowe: "<< w1 <<" i " << w2 <<" .\n";
    }
    else                                                                
    if (delta==0)
    {
        float w3 = (-1*wb)/(2*wa);
        cout << "Ma 1 miejsce zerowe: " << w3 << " .\n";
    }
    else
    {
        cout << "Nie ma miejsc zerowych\n";
    }
       
    cout << "przecina os y w punkcie (0;"<<wc<<").\n";
    float pw = (-1*wb)/(2*wa);     \\codzi o ten
    float qw = (-1*delta)/(4*wa);   \\i o ten wzor
    cout << "Jej wierzcholkiem jest punkt (" << pw << ";" << qw << ").\n\n";
    system("PAUSE");
    endl;
    }
    Znalazłem dziwny błąd, gdy delta jest mniejsza od zera pokazują się jakieś głupie wyniki
    a w wszystkich innych wypadkach liczy dobrze
    chociaż wszystkie w/w operacje obsługuje jeden wzór
    nie wiem gzie jest błąd


  2. #2

    Odp: Dziwny błąd...

    Masz, teraz powinno działać

    Kod:
    #include <iostream>
    using namespace std;
    
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
    float w1,w2;
    
    cout << "a = ";
    float wa;
    cin >> wa;
    
    cout << "b = ";
    float wb;
    cin >> wb;
    
    cout << "c = ";
    int wc;
    cin >> wc;
    double delta;
    double(delta = wb*wb-4*wa*wc) ;
    cout << "Funkcja " << wa <<"x^2+" << wb <<"x+" << wc <<"=0"<<endl ;
    cout << "Delta: " << delta << endl;        
           
           
           
    if (delta>0)
    {
                   
         w1 = (-1*wb-1 * ( sqrt(delta)))/(2*wa);
         w2 = (-1*wb + ( sqrt(delta) ))/(2*wa);
        cout << "Ma 2 miejsca zerowe: "<< w1 <<" i " << w2 <<" .\n";
    }
    else                                                                
    if (delta==0)
    {
        float w3 = (-1*wb)/(2*wa);
        cout << "Ma 1 miejsce zerowe: " << w3 << " .\n";
    }
    else
    {
        cout << "Nie ma miejsc zerowych\n";
    }
       
    cout << "przecina os y w punkcie (0;"<<wc<<").\n";
    float pw = (-1*wb)/(2*wa);     //codzi o ten
    float qw = (-1*delta)/(4*wa);   //i o ten wzor
    cout << "Jej wierzcholkiem jest punkt (" << int(pw) << ";" << int(qw) << ").\n\n";
    
    
    return(0);
    }
    Main jest typu int !!!! i zapamiętaj to do końca życia
    Typy się nie zgadzały i kompilator interpretował to na swój sposób
    np sqrt to double !! a nie float ;]
    umieszczaj zmienne i stale na początku programu bo jeśli ktoś kto czyta
    ma problemy z odszukaniem ich deklaracji.


 

Bookmarks

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
Do góry

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19