sterowanie formatem c++

0

Mam pytanie, potrzebuję napisać program polecenie: Napisz program tak, aby liczby wyświetlały się w następujący sposób:
dziesiętnie: 59,
szesnastkowo: 0x3B ,
ósemkowo: 0o73
Sprawdź, w jaki sposób poniższa linijka wpłynie na wyświetloną szesnastkowo liczbę:

cout.setf(ios::uppercase);

Czy jak mi wychodzi 59 0x3b 073 to jest dobrze?
Czy część kodu poniżej jest poprawna?
Proszę o wskazówki a nie o rozwiązanie zadania

int l = 59;
cout.setf(ios::dec, ios::basefield); // w jakim systemie będą wpisywane lub wczytywane liczby
cout << l << endl; //59 liczba wyświetlana w systemie dziesiętnym
cout.setf(ios::showbase);
cout.setf(ios::hex, ios::basefield);
cout.setf(ios::uppercase);
1

Użyj std::hex std::dec std::oct z #include <iomanip>.

Czemu miało by być źle?

0

bo mi wyświetla 59 0x3b 073 a w treści zadania w pierwszej części jest napisane aby wyświetlały się w sposób: 59, 0x3B,0o73

1

Nie wiem skąd się wzięło w treści zdania 0o73, bo to jest ewidentnie źle. Ma być po prostu 073 i koniec (bo tak są zdefiniowane literały liczb całkowitych w C++).
Rożnica przecinek spacja to chyba jest łatwa do naprawienia.

0

dziękuję :)

0

A duże B które powinno niby się wyświetlać też jest błędem?

1

Oprócz tego że strasznie przekombinowano:

#include <iostream>
using namespace std;

int main()
{
	cout.setf(ios::showbase);
	int value=59;
	cout<<dec<<value<<endl;
	cout<<oct<<value<<endl;
	cout<<hex<<value<<endl;
	cout<<uppercase<<hex<<value<<endl;
	cout<<hex<<value<<endl;
	cout.unsetf(ios::uppercase);
	cout<<hex<<value<<endl;
	return 0;
}

https://ideone.com/qG0NAK
to wszystko jest wporządku.
Co do "... w pierwszej części jest napisane aby wyświetlały się w sposób: 59, 0x3B,0o73 ..." - zmień kompilator.

0

Dlaczego tutaj nie chcę mi dać kropki przy 3 tzn. nie działa polecenie showpoint?

#include <iostream>

using namespace std;

int main()
{
    int l = 3;
    float a = 4.57; //przypisanie wartości zmiennej
    cout.setf(ios::showpos); //przy wypisywaniu dodatnich liczb dziesiątkowych zostaną poprzedzone znakiem +
    cout << l << endl; //wyświetlenie liczby
    cout.unsetf(ios::showpos); //usunięcie działania flagi showpos
    cout.setf(ios::showpoint); //pokazuje kropkę dzisiętną
    cout << l << endl; //wyświetlenie liczby
    cout << a << endl;
}
0

https://ideone.com/RXfn81

#include <iostream>
using namespace std;

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	cout.setf(ios::showbase);
	int value=59;
	cout<<dec<<value<<endl;
	cout<<oct<<value<<endl;
	cout<<hex<<value<<endl;
	cout<<uppercase<<hex<<value<<endl;
	cout<<hex<<value<<endl;
	cout<<nouppercase<<hex<<value<<endl;
	cout<<dec;
	double real=95;
	cout<<showpoint<<real<<endl;
	cout<<noshowpoint<<real<<endl;
	return 0;
}
0

czyli co mam zmienić w moim programie?

0

Dziękuję :)

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