Podstawy C++ - czemu taki dziwny wynik ?!

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
tspychala
Piegowaty Guziec
Piegowaty Guziec
Posty: 17
Rejestracja: 07 paź 2009, 00:33
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86

Podstawy C++ - czemu taki dziwny wynik ?!

Post autor: tspychala »

Koledzy zaczynam cos dzialac w C++ i napisalem cos takiego \:

Kod: Zaznacz cały

#include <iostream>
int main()
	{
	double lata;
	double dni;
	double minuty;
	double przelicznik=365;
	double przelicznikmin=1560;

	std::cout<<"Podaj ile masz lat a ja powiem ile dni i minut juz minelo\n";
	std::cin>>lata;
	std::cout<<"\n";
	
	dni=lata*przelicznik;
	minuty=przelicznikmin*dni;
	
	std::cout<<"Minelo\n"<<dni<<"\nDni od Twoich narodzin\n""oraz\n"<<minuty<<"\nMinut";
	std::cout<<"\n";
}
jak podam 1 rok to wszystko ok, jednakze jak juz wpisze 2 lata to wynik minut mam taki :
oraz
1.1388e+06
Minut

o co chodzi??!! Cze uzyc jakiejs innej deklaracji czy co??
macer
Wytworny Kaczor
Wytworny Kaczor
Posty: 453
Rejestracja: 12 wrz 2009, 21:07
Wersja Ubuntu: inny OS

Odp: Podstawy C++ - czemu taki dziwny wynik ?!

Post autor: macer »

Za duża liczba, spróbój zastąpić double przez long, i powiedz czy działa.

Sprawdziłem i działa :)
Awatar użytkownika
Szmitas
Zakręcona Traszka
Zakręcona Traszka
Posty: 572
Rejestracja: 28 lis 2006, 17:38
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86
Lokalizacja: Luboń
Kontakt:

Odp: Podstawy C++ - czemu taki dziwny wynik ?!

Post autor: Szmitas »

przed wyświetleniem daj:
std::cout.precision(20);
A najlepiej po include<iostream> daj using namespace std; i usuń wszystkie std::
www.ubuntu-pomoc.org - tutaj znajdziesz rozwiązanie każdego Twojego problemu.

Chcesz zostać Redaktorem ubuntu-pomoc.org? Skontaktuj się ze mną!
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: Podstawy C++ - czemu taki dziwny wynik ?!

Post autor: mikolajs »

jak podam 1 rok to wszystko ok, jednakze jak juz wpisze 2 lata to wynik minut mam taki :
oraz
1.1388e+06
Minut

o co chodzi??!! Cze uzyc jakiejs innej deklaracji czy co??
Program działa prawidłowo tylko podaje wynik w postaci wykładniczej.
Tylko doba ma 1440 minut a nie 1560 ;)

PS. int w zupełności wystarczy (dla zwykłych śmiertelników :) )
Spróbuj zrobić program liczący ilość dni lub minut na podstawie daty urodzenia.
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: Podstawy C++ - czemu taki dziwny wynik ?!

Post autor: beluosus »

Moim zdaniem poprawniejszym rozwiązaniem niż to Szmitasa (aczkolwiek jego również będzie działać w tym przypadku):

Kod: Zaznacz cały

std::cout.precision(0);
std::cout<< std::fixed << "Minelo\n"<<dni<<"\nDni od Twoich narodzin\n""oraz\n"<<minuty<<"\nMinut";
PS Są jeszcze lata przestępne. ;P
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
tspychala
Piegowaty Guziec
Piegowaty Guziec
Posty: 17
Rejestracja: 07 paź 2009, 00:33
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: Podstawy C++ - czemu taki dziwny wynik ?!

Post autor: tspychala »

Dzieki chlopaki za odpowiedzi ;) To moj pierwszy programik wiec mam glupie pytania... :) Studiuje symfonie i coraz wiecej pytan... :)
luzakwielki
Wytworny Kaczor
Wytworny Kaczor
Posty: 264
Rejestracja: 19 lis 2008, 11:42
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86_64

Odp: Podstawy C++ - czemu taki dziwny wynik ?!

Post autor: luzakwielki »

macer pisze:Za duża liczba, spróbój zastąpić double przez long, i powiedz czy działa.

Sprawdziłem i działa :)
Liczba nie jest za duza tylko pokazana w zapisie wykladniczym (1.1388*10^(+6)).
Long, jest zmienna innego typu (fakt tu bardziej nadaja sie liczby calkowite, ale wieksza precyzje ma double, wiec jakby nie miesciloby sie w double to z pewnoscia w long tez nie).
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 15 gości