problem ze wyswietleniem tablicy float w hex i oct

0

Siema. Pisze pewien programik i mam problem. Mianowicie muszę mieć tablicę zmiennych float i muszę to co wprowadzę sobie do tej tablicy później wyświetlić w systemie ósemkowym(oct) i szesnastkowym(hex). I nie wiem jak to zrobić bo normalnie zrobiłbym tak gdyby tablica była int cout<< hex <<tab i by działało ale z racji ze moja tablica jest i musi być w float to to nie działa i nie wiem jak wymusić żeby to działało.Poniżej zamieszam cały kod. Pozdrawiam i z góry dzięki za pomoc

 
#include <iostream>
#include <iomanip>
#include <stdlib.h>
using namespace std;
void main()
{
	int max,precyzja,i,j,b;
	int rozmiar;
	int nr;
	max=1000;
pocz:
	cout<< "\nPodaj rozmiar tabicy: ";
	cin>>rozmiar;
	float *tab=new float[rozmiar];
	if(rozmiar>max)
	{
		cout<<"Podany rozmiar tablicy jest wiekszy od maksymalnego.";
		goto pocz;
	}
	for(i=0;i<=rozmiar-1;i++)
	{
		cout<<"Wprowadz "<< i+1 << " element tablicy: "; 
		cin>>tab[i];
	}
	do
	{
	cout<<"\n|====================================MENU=====================================|";
	cout<<"\n|                             Co chcesz zrobic?                               |";
	cout<<"\n|1.Wcisnij 1 aby wyswietlic liczby w wyrownanej kolumnie.                     |";
	cout<<"\n|2.Wcisnij 2 aby wprowadzic precyzje liczb i je wyswietlic.                   |";
	cout<<"\n|3.Wcisnij 3 aby wyprowdzic liczby w postaci osemkowej.                       |";
	cout<<"\n|4.Wcisnij 4 aby wyprowdzic liczby w postaci szesnastkowej.                   |";
	cout<<"\n|5.Wcisnij 5 aby wyprowadzic liczby w notacji zwyklej i naukowej.             |";
	cout<<"\n|====================WCISNIJ 6 BY ZAKONCZYC PRACE PROGRAMU====================|";
	cout<<"\nWybor: ";
	cin>>nr;
	switch(nr)
	{
		case 1:
			
			for(int k=0;k<=rozmiar-1;k++)
			{
				cout<<setw(30)<<"tab["<<k<<"]="<<tab[k]<<endl;
			}
			break;
		case 2:
			cout<<"Podaj precyzje wyswietlanych liczb: ";
			cin>>precyzja;
			cout<<"Liczby w twojej tablicy wygladaja teraz nastepujaco:"<<setprecision(precyzja)<<endl;
			for(int k=0;k<=rozmiar-1;k++)
			{
				cout.width(20);
				cout.setf(ios::fixed, ios::floatfield); 
				cout<<right<<oct<<tab[k]<<endl;
			}
			break;
		case 3:
			for(int h=0;h<rozmiar;h++)
			{ 
				cout<<oct<<tab[h]<<endl;
			}
			break;
		case 4:
			for(int v=0;v<=rozmiar-1;v++)
			{
				cout<<hex<<tab[v]<<endl;
				
			}
			break;
		case 5:
			cout<<"           [notacja zwykla]:            [notacja naukowa]: "<<setprecision(precyzja)<<endl;
			for(j=0,b=0;j,b<=rozmiar-1;j++,b++)
			{
				cout.width(15); 
				cout.setf(ios::fixed, ios::floatfield); 
				cout<<"tab["<<j<<"]="<<right<<tab[j];
				cout.setf(ios::scientific, ios::floatfield); 
				cout.setf(ios::uppercase); 
				cout.width(15);
				cout<<"\ttab["<<b<<"]="<<right<<tab[b]<<endl;
			}
			break;	
	}
	}while(nr!=6);
	cout.setf(0, ios::basefield);
	
}
0

http://bytes.com/topic/c/answers/219928-how-convert-float-hex - pierwszy wynik google dla c++ float to hex... tak ciężko poszukać?

0

Nie bardzo tam wszystko rozumiem byłbym wdzięczny jakbyś mi jakoś to przedstawił bo nie do końca nawet wiem które fragmenty kodu są potrzebne do zamiany. Pozdro

0

Przecież tam masz nawet kod podany na tacy..., ale ok masz funkcje:

string decimalToHex(double decimal, int precission)
{
	ostringstream oss;
	
	oss << hex << (int)decimal << '.';
	decimal -= (int)decimal;

	while(decimal != 0 && precission > 0)
	{
		decimal *= 16;
		oss << (int)decimal;
		decimal -= (int)decimal;
		precission--;
	}

	return oss.str();
}

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