Błąd w wyniku

0

Witam, błąd polega na tym, że dla niektórych wartości podaj 0, np dla gigabajtów powyżej 4 pokazuje 0

//Pliki naglowkowe do kalkulatora informatycznego

//okreslenie typu wyliczeniowego
enum SCALE {SCL_TB = 't', SCL_GB = 'g', SCL_MB = 'm', SCL_KB = 'k', SCL_B = 'b' };

//deklaracja klasy kalkulator
class kalkulator
{
	private: 
		long long unsigned i_wartosc;

	public:
		//zadeklarowanie funkcji

		void ustaw_na_bajty(unsigned, SCALE);
		//zamiana na bajty

		long long unsigned zamien_na_inne(SCALE);
		//pobierz bajty, przekonwertuj na inne jednostki


};
 
// klasa kalkulator okreslenie funkcji w klasie

#include "licz.h"

void kalkulator::ustaw_na_bajty(long unsigned od_uzytkownika, SCALE skala)
{
	switch(skala)
	{
	case SCL_B: i_wartosc = od_uzytkownika; break;
	case SCL_KB: i_wartosc = (1024 * od_uzytkownika); break;
	case SCL_MB: i_wartosc = (1024 * 1024 * od_uzytkownika); break;
	case SCL_GB: i_wartosc = (1024 * 1024 * 1024 * od_uzytkownika); break;
	case SCL_TB: i_wartosc = (1024 * 1024 * 1024 * 1024 * od_uzytkownika); break;
	
	}
}

long long unsigned kalkulator::zamien_na_inne(SCALE skala)
{
	switch(skala)
	{
	case SCL_B: return i_wartosc;									
	case SCL_KB: return i_wartosc / 1024;										
	case SCL_MB: return i_wartosc / (1024 * 1024);			
	case SCL_GB: return i_wartosc / (1024 * 1024 * 1024);		
	case SCL_TB: return i_wartosc / (1024 * 1024 * 1024 * 1024); 
	default:	return 1;											
	}
} 
 #include <iostream>
#include <conio.h>
#include "licz.h"

//czesc glowna

int main()
{
	std::cout << "Kalkulator przeliczajacy jednostki informatyczne" << std::endl;
	std::cout << "_________________________________________________" << std::endl;
		char chskala;
	std::cout <<"Podaj wartosc w jakiej podasz wartosc do przeliczenia" << std::endl;
	std::cout << "(b- bajty, k-kilobajty, m-megabajty, g-gigabajty, t-terabajty) Wielkosc litery ma zanczenie! :";
	std::cin >> chskala;
	if (chskala!='b' && chskala!='k' && chskala!='m' && chskala!='g' && chskala!='t') 
	{
		std::cout << "Zla litera";
		getch();
	};

	long long unsigned do_przeliczenia;

	std::cout << "Podaj wartosc do przeliczenia: ";
	std::cin >> do_przeliczenia;

	kalkulator Oblicz;

	Oblicz.ustaw_na_bajty(do_przeliczenia, static_cast<SCALE>(chskala));

	//wypisujemy wynik

	std::cout <<" " << std::endl;
	std::cout << "-bajty: " << Oblicz.zamien_na_inne(SCL_B) << std::endl;
	std::cout << "-kilobajty: " << Oblicz.zamien_na_inne(SCL_KB) << std::endl;
	std::cout << "-magabajty: " << Oblicz.zamien_na_inne(SCL_MB) << std::endl;
	std::cout << "-gigabajty: " << Oblicz.zamien_na_inne(SCL_GB) << std::endl;
//	std::cout << "-terabajty: " << Oblicz.zamien_na_inne(SCL_TB) << std::endl;
	std::cout << "Nacisnij dowlony klawisz, aby zamknac aplikacje";
	getch();
};
0

Uruchom coś w rodzaju
cout << sizeof(long long unsigned) << endl;
Jeśli wyświetli 4 to jesteś w domu - używasz liczb 4 bajtowych (max. 4294967296 - dokładnie tyle co 4 GB) które nie dają rady z liczbami jakich używasz.

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