Liczba cyfr po przecinku w cout

0

Witam, chciałbym aby w zamieszczonym poniżej programie, obliczony azymut (druga część programu) w instrukcji "cout" wyświetlał się z dokładnością 4 cyfr po przecinku. Szukałem rozwiązania z setprecision (4) ale to chyba nie będzie działać dla instrukcji zamieszczonej w cout. Jakie proponujecie rozwiązanie?

#include <iostream>
#include <math.h>
#include <cstdlib>

using namespace std;

int wybor;


int main()
{

    for (;;)
    {

        float x1, y1, x2, y2, dx, dy;


        cout << ("________________________________________________");
        cout << endl << ("Witaj w programie 'Odleglosc i azymut'!");
        cout << endl << endl << ("Wybierz co chcesz policzyc:");
        cout << endl << ("*Odleglosc ze wspolrzednych: NACISNIJ 1");
        cout << endl << ("*Azymut: NACISNIJ 2");
        cout << endl << endl << ("________________________________________________");

        cout << endl << ("Wybierz opcje:");
        cin >> wybor;
        switch (wybor)
        {
            case 1:
                cout << endl << ("Witaj w menu 'Odleglosc'!");
                cout << endl << ("UWAGA:Jako separatora dziesietnego uzywaj kropki.");
                cout << endl << endl << ("Podaj x1:");
                cin >> x1;

                cout << endl << ("Podaj y1:");
                cin >> y1;

                cout << endl << ("Podaj x2:");
                cin >> x2;

                cout << endl << ("Podaj y2:");
                cin >> y2;


                cout << endl
                     << "Odleglosc miedzy punktami 1 i 2 wynosi: "
                     << sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) << endl;


                break;

            case 2:
                cout << endl << ("Witaj w menu 'Azymut'!");
                cout << endl << ("UWAGA:Jako separatora dziesietnego uzywaj kropki.");
                cout << endl << endl << ("Podaj x1:");
                cin >> x1;
                cout.precision(4);
                cout << endl << ("Podaj y1:");
                cin >> y1;

                cout << endl << ("Podaj x2:");
                cin >> x2;

                cout << endl << ("Podaj y2:");
                cin >> y2;

                dx = x2 - x1;
                dy = y2 - y1;

                if ((dy > 0) & (dx > 0))
                {
                    cout << endl
                         << "Azymut odcinka 1,2: " << ((atan((dy / dx))) * (200 / M_PI))
                         << ("[grad]") << endl;
                } // I cwiartka
                else if ((dy > 0) & (dx < 0))
                    cout << endl
                         << "Azymut odcinka 1,2: "
                         << 200 - ((atan((dy / dx * (-1)))) * (200 / M_PI)) << ("[grad]")
                         << endl; // II cwiartka
                else if ((dy < 0) & (dx < 0))
                    cout << endl
                         << "Azymut odcinka 1,2: "
                         << 200 + ((atan((dy * (-1) / dx * (-1)))) * (200 / M_PI)) << ("[grad]")
                         << endl; // III cwiartka
                else if ((dy < 0) & (dx > 0))
                    cout << endl
                         << "Azymut odcinka 1,2: "
                         << 400 - ((atan((dy * (-1) / dx))) * (200 / M_PI)) << ("[grad]")
                         << endl; // IV cwiartka
                else if ((dx == 0) & (dy > 0))
                    cout << endl
                         << "Azymut odcinka 1,2: 100" << ("[grad]") << endl; // Przypadki szczegolne
                else if ((dx == 0) & (dy < 0))
                    cout << endl
                         << "Azymut odcinka 1,2: 300" << ("[grad]") << endl; // Przypadki szczegolne
                else if ((dy == 0) & (dx < 0))
                    cout << endl
                         << "Azymut odcinka 1,2: 200" << ("[grad]") << endl; // Przypadki szczegolne
                else if ((dy == 0) & (dx > 0))
                    cout << endl
                         << "Azymut odcinka 1,2: 0" << ("[grad]") << endl; // Przypadki szczegolne
                else if ((dy == 0) & (dx == 0))
                    cout << endl
                         << "Punkty 1 i 2 to te same punkty! Brak azymutu!"
                         << endl; // Przypadki szczegolne


                break;
        }
    }


    cin.ignore();
    cin.get();
    return 0;
}
1
cout << fixed << setprecision(4) << 123.45678 << endl;

Wyświetli

123.4568
0
   cout << fixed << setprecision(4)  << "Azymut odcinka 1,2: " << ((atan((dy / dx))) * (200 / M_PI))<<endl;

Wyrzuca błąd w kodzie. Coś robię nie tak?

0

Nie wiem. Mam się domyślić jaki to błąd?

1

Może #include <iomanip>

0

@pingwindyktator Zgadza się, do zamknięcia :) Dziękuję za pomoc.

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