C++
Hubert: Cześć, tak trochę nietypowo ale może ktoś będzie wiedział.Napisałem funkcję która ma
wydawać resztęz automatu. Problem polega na tym że przy wypisywaniu reszty zostają
jakieś śmieci np gdy zostaje do zapłaty 1 groszy to program pisze 0,001000002.
Próbowałem pomnożyć zmienną *100 do innej zmiennej
typu int wstać tę wartość i z powrotem. Ale nadal to nie działa
28 mar 21:45
Hubert: Funkcja:
void kasa(float y, int ilo, float wrzut, float h, float cena[], int i){
int jkl;
float zmienna;
float juz;
wrzut=0;
y=cena[i]*ilo;
do{
zmienna=y−wrzut;
cout<<"pozostalo do zaplaty "<<zmienna<<endl<<"Wrzuc monety"<<endl<<"Jaki nominal
wrzuciles"<<endl;
cin>>h;
wrzut=wrzut+h;
}while(y>wrzut);
cout<<"wrzuciles w sumie "<<wrzut<<" twoja reszta to "<< wrzut − y <<endl<<"Odbierz
reszte"<<endl<<endl;
}
28 mar 21:46
jc:
Po co umieszczasz na liście argumentów zmienne y, wrzut, h skoro zaraz potem
niszczysz ich wartości?
Nigdzie nie używasz zmiennej ijk.
Popraw kod i będziemy szukać usterki.
28 mar 22:07
jc: Co właściwie chcemy?
reszta = (wrzucona suma) − cena
Czy to wszystko?
double reszta(double wrzut, double cena){
return wrzut − cena;
}
28 mar 22:18
Hubert: Właściwie to nie potrzebuje nawet zwracania reszty wszystko miało być wypisywane we funkcji.
A te dziwne zmienna to pozostałości po próbach zaokrąglenia liczb.
Na ćwiczeniach mówili że take "resztki" to normalna sprawa i trzeba to jakoś zaokrąglić do
liczb setnych
28 mar 22:38
28 mar 22:39
Hubert: void kasa(float y, int ilo, float wrzut, float h, float cena[], int i){
float zmienna;
float jkl;
wrzut=0;
y=cena[i]*ilo;
do{
zmienna=y−wrzut;
Tutaj robiłem takie coś:
jk;=zmienna*100;
zaokrąglenie liczby jkl do jedności
zmienna=jkl/100;
cout<<"pozostalo do zaplaty "<<zmienna<<endl<<"Wrzuc monety"<<endl<<"Jaki nominal
wrzuciles"<<endl;
cin>>h;
wrzut=wrzut+h;
}while(y>wrzut);
cout<<"wrzuciles w sumie "<<wrzut<<" twoja reszta to "<< wrzut − y <<endl<<"Odbierz
reszte"<<endl<<endl;
}
28 mar 22:41
28 mar 22:41
Dziadek Mróz:
printf("2.333: %.2f\t2.335: %.2f\n", 2.333, 2.335); // 2.333: 2.33 2.335: 2.34
28 mar 22:46
Dziadek Mróz:
#include <iostream>
#include <iomanip>
int main()
{
std::cout << std::setprecision(3) << 2.333 << " " << 2.335 << "\n";
}
28 mar 22:48
Dziadek Mróz:
Zależnie od kompilatora, u mnie zaokrągla, na ideone dopiero przy 2.3355
28 mar 22:52
Hubert: Ok dzięki wpadłem na to na inny pomysł a mianowicie zmieniłem wszystkie dane na typ int, a ceny
podałem w groszach.
Dopiero przed samym wyświetlaniem (po obliczeniach) zamieniam je na złotówki.
Dzięki za pomoc, pewnie wkrótce się odezwę.
28 mar 22:57