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;
}