Ujemna delta w równaniu kwadratowym i liczby zespolone

0

Witam,
w ramach rozbudowy mojego programu chcę dodać możliwość liczenia pierwiastków zespolonych (w przypadku ujemnej delty). W jaki sposób zorganizować to w możliwie najprostszy sposób? Tablica dwuwymiarowa, czy moze jakas dodatkowa klasa?

Z góry dzięki za pomoc i pozdrawiam.

Chodzi mi o rozwiązania z języki C++

0

Można to zorganizować na różne sposoby: dwie zmienne, tablica (jednowymiarowa na dwa elementy), struktura klasa, nawet jako listę jednokierunkową można to zorganizować.
Dla programu obliczającego korzenie funkcji kwadratowej wystarczy dwie zmienne.

0

Dwie zmienne? Hmm... może jakaś konkretna propozycja. Nie potrzeba mi kodu tylko słowne wyjaśnienie działania czegoś takiego. Zakładam, że delta jest ujemna i w takim razie jakich zmiennych powinien użyć program?

0

Powinien użyć zmiennych, które mogą przechowywać liczby zespolone. A może tak podał byś jaki język. Przykładowo w C++ masz std::complex, w D cdouble, w Ruby Complex, w Pythonie cmath.

0

dla obliczenia pierwiastków równania kwadratowego potrzebne tylko dwie zmienne:

re=-B/(2*A);
im=sqrt(-Delta)/(2*A); // to może być z plusem lub z minusem

Chociaż nawet bez nich można się obejść, bo w każdym języku można wyświetlić wynik obliczeń beż poprzedniego zapisania tego wyniku do zmiennej.

0

@up:
wpadłem na dokładnie taki sam pomysł. Po tym jak program zaczął działać zacząłem się zastanawiać nad jeszcze jednym rozwiązaniem - co zrobić, by program przyjmował również współczynniki zespolone. I do tego raczej niezbędne jest chyba zdefiniowanie nowej klasy - klasy liczb zespolonych? Ze wszystkimi operatorami do działania na nich?

I jeszcze jedno pytanko - na końcu pętli mojego programu jest zapytanie o to, czy użytkownik chce policzyć pierwiastki jeszcze raz (czy przejechać pętlą jeszcze raz) i ma wybór tak/nie sygnalizowany wpisaniem literki t lub n i wciśnięciem Entera. Jaką procedurę zastosować by program od razu się restartował po wciśnięciu "t" (bez wciskania Entera), od razu wyłączał po wciśnięciu "n" i nie reagował na inne klawisze?

0

W każdym języku to się robi inaczej. Wciąż nie podałeś o jaki język ci chodzi.

0

Oczywiście C++.

0

A co z tym klawiszem t/n?

0

C/C++ nie mają w standardzie niczego takiego, w C++ to się robi jakoś tak:

while(true)
  {
   cout<<"Podaj wspolczynniki (!-koniec): ";
   double a,b,c;
   if(cin>>a>>b>>c)
     {
      // tu wyliczasz.
     }
   else
     {
      cin.clear();
      if(cin.get()=='!') break; // można od razu return 0;
      cout<<"wspolczynniki maja byc w postaci cyfrowej"<<endl<<endl;
     }
   cin.sync();
  }

Jest to znacznie wygodniejsze w użytkowaniu niż to t/n.
Z tym że zawsze możesz użyć jakichś bibliotek mniej lub więcej kompatybilnych.
Najczęściej używana jest dla tych celów conio.
Można też użyć WinAPI jeżeli piszesz pod windows.
http://msdn.microsoft.com/en-us/library/ms682073%28v=vs.85%29.aspx patrz SetConsoleMode

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