źle liczy jedno miejsce zerowe początkujące zadanie

0

Witam mam Problem z liczeniem jednego miejsca zerowego gdy delta jest równa zero

 
 string a, b, c;
            Double d, f, g, m, r, p, o, i;
            Console.WriteLine("Podaj wartość a funkcji kwadratowej");
            a = Console.ReadLine();
            Console.WriteLine("Podaj wartość b fukcji kwadratowej");
            b = Console.ReadLine();
            Console.WriteLine("Podaj wartość c funkcji kwadratowej");
            c = Console.ReadLine();
            d = Double.Parse(a);
            f = Double.Parse(b);
            g = Double.Parse(c);
            m = f * f - 4 * d * g;
            r = Math.Sqrt(m);
            Console.WriteLine("Piewiastek z Delty wynosi:" + r + "");
            p = -f - r / 2 * d;
            o = -f + r / 2 * d;
            i = -f / 2 * d;
            if (m>0)
            { Console.WriteLine(" 'Delta Dodatnia' Pierwsze miejsce zerowe wynosi X1= :" + p + ""); };
            if (m>o)
            { Console.WriteLine(" 'Delta Dodatnia' Drugie miejsce zerowe wynsoi X2=:" + o + ""); };
            if (m == o)
            { Console.WriteLine(" 'Delta równa zeru' Jedno miejsce zerowe wynosi X0=:" + i + ""); };  // pokazuje mi drugie miejsce gdzie delta równa jest zero 
            if (m<0)
            { Console.WriteLine(" 'Delta mniejsza ode zera' Brak miejsc zerowych:" + r + ""); };
            Console.ReadKey(true);
0

To sobie odpal w debugerze i zobacz co się dzieje...

0

Chciałem Ci na szybko pomóc, ale kod jest bardzo mało intuicyjny i potrzebowałbym więcej czasu, żeby rozgryzc Twoja wyliczankę. Być może kto inny da Ci rozwiązanie na tacy, a ja póki co poradzę Ci tyle:

  • nazywaj pola tak, żeby od razu było wiadomo, co to jest...choćby zamiast jakiegoś "p" napisz "pierwiastekRownaniaKwadratowego",
  • nie przypisuj tych samych wartości do kilku zmiennych, na które potem Ci braknie alfabetu, użyj przy pobieraniu danych od użytkownika funkcji TryParse(), a kod będzie wyglądał schludniej
  • użyj breakpointa (F9) do zatrzymania programu w problematycznym miejscu i przeanalizuj czy wszystko działa tak jak zaplanowałeś.
5

Po pierwsze, 0 != o, takie są skutki głupich nazw zmiennych.
Po drugie, wszystkie wzory na pierwiastki są błędne.

0

Do tego co napisał @bogdans obliczanie wszystkiego, jeśli jest mozliwe dzielenie przez zero nie jest moim zdaniem najlepszym pomysłem, nie wspomnę już o tym, że tak zapisane wzory mogą liczyć sie źle (kolejność wykonywania działań)

0

Dzięki luki jestem początkujący i jeszcze nie ogarniam a co do"!=" Działka tak samo jak "==" i jest tylko jeden wzór na pierwiastek :) więc nie bardzo rozumiem co masz na myśli wzory?

0
  1. Pisząc 0 != o chciałem Ci zwrócić uwagę, że pomyliłeś liczbę 0 ze zmienną o.
  2. To mam na myśli:
            p = -f - r / 2 * d;
            o = -f + r / 2 * d;
            i = -f / 2 * d;

Jak by nie liczyć to są trzy wzory, wszystkie są błędne.

0

Nie rozumiem, po co w ogóle tak utrudniać sobie życie i nazywać zmienne w kodzie inaczej niż występują w implementowanych wzorach matematycznych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1