matematykaszkolna.pl
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
Dziadek Mróz: Pokaż cały kod, wstaw na http://pastebin.com Ustaw Syntax Highliting na C++
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