Napisz prosty program wykorzystujący instrukcję warunkową if , który będzie wyznaczał pierwiastki x1, x2 lub x0 równania kwadratowego ax^2+bx+c=0 lub ich brak.
Założenia współczynniki a, b, c mają być typu float (zakładamy, że a jest różne od zera).
Użytkownik ma zostać poproszony o wpisanie wartości współczynników, a następnie program ma wyznaczyć pierwiastki i wypisać ich wartość na ekranie lub w przypadku braku pierwiastków ma wypisać stosowny komunikat.


Odpowiedź :

Odpowiedź

Napisałam prosty program, ale rzeczywiście ma sporo instrukcji warunkowych. Znajduje się on w 1. załączniku. Przetestowałam używając g++ (Linux), cpp .sh, replit oraz onlinegdb.

Obliczone pierwiastki są wypisywane ze stałą dokładnością dwóch cyfr po przecinku. Można to zmieniać manipulując wartością zmiennej format. Na przykład zamiast 2F wpisać 4G.

Program jest prosty. Ani nie dokonuje sprawdzenia poprawności wprowadzanych danych (gdy się wpisze niepoprawne dane wejściowe, to program się wysypie). Ani nie przyjmuje danych według polskiego systemu, czyli z przecinkiem dziesiętnym. Ani nie wypisuje liczb (rozwiązania) z przecinkiem dziesiętnym.

W 2. załączniku pokazałam wyniki z przykładowych uruchomień (używając replit).

Wyjaśnienie

Aby ten program działał z symbolami matematycznymi oraz polskimi literami pod Windows (obojętnie czy przy użyciu CodeBlocks, czy Visual Studio) należy wprowadzić kilka drobnych zmian.

  • Dodać na początku następujące trzy wiersze:

         #include <fcntl.h>

         #include <io.h>

         #include <stdio.h>

  • Jako pierwszą linijkę w main() wpisać:

        int ignorowane_ale_konieczne = _setmode(_fileno(stdout), _O_U16TEXT);

  • Wiersz definiujący zmienną format zamienić na:

         const wchar_t* format = L"%.2F\n";

  • Wszystkie wystąpienia

          printf("

        zamienić na

          wprintf(L"

Zobacz obrazek 0AB
Zobacz obrazek 0AB