Wypisanie zawartości tablicy w innej notacji

0

Cześć wszystkim ;).
Sytuacja wygląda następująco:
Mam klasę, w której zdefiniowana jest tablica dynamiczna liczb typu int o rozmiarze rozmiar (rozmiar jest liczbą typu int w sekcji private, tablica jest inicjalizowana poprzez funkcję klasy odbierającą zmienną od użytkownika i wstawiającą ją do zmiennej rozmiar). W trakcie działania programu użytkownik wypełnia tablicę, jest jeszcze możliwych do wykonania po drodze kilka działań, w każdym razie istotą problemu jest to, że sama tablica przechowywana jest w sekcji private klasy Tablica, a dostęp do niej uzyskuję poprzez wskaźnik wtab, który utworzony został przy dynamicznym alokowaniu pamięci dla tablicy, i na końcu programu potrzebuję wypisać na ekran jej zawartość w notacji naukowej, szesnastkowej i ósemkowej. Zdefiniowałem w tym celu 3 funkcje klasy:

void Tablica::szesnastkowo()
{
	for(int i=0; i<rozmiar; i++)
	{
		cout << "Element " << i+1 << ". : " << hex << wtab[i] << endl;
	}
}

void Tablica::naukowo()
{
	for(int i=0; i<rozmiar; i++)
	{
		cout << "Element " << i+1 << ". : " << scientific << wtab[i] << endl;
	}
}

void Tablica::osemkowo()
{
	
	for(int i=0; i<rozmiar; i++)
	{
		cout << "Element " << i+1 << ". : " << oct << wtab[i] << endl;

	}
}

Nie działają one jednak prawidłowo, wyświetla się normalna zawartość tablicy w postaciach dziesiątkowych. Co jest nie tak ?

0

hex i oct dotyczą tylko liczb całkowitych.

0

W zasadzie fakt, dla int działa, dla double już nie, no ale to chyba oczywiste, sam tego nie zauważyłem :). Natomiast scientific działa dla double.

0

Hej:) Możesz zmienić typ liczby wyświetlanej za pomocą operatora static_cast, np:

cout << "Element " << i+1 << ". : " << hex << static_cast<unsigned int>(wtab[i]) << endl;

Niestety w przypadku double obetnie Ci to część ułamkową:/ No i musisz też wiedzieć że liczby ujemnej tak nie wyświetlisz... Ale jeśli koniecznie chcesz, to nie jest niemożliwe do zrobienia:D Ale pracy może być sporo bo musiałbyś poczytać jak się zapisuje ułamki w innej podstawie:)

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