[ Príspevkov: 11 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.03.13
Prihlásený: 09.04.18
Príspevky: 112
Témy: 39 | 39
NapísalOffline : 12.11.2016 18:45 | C jednoducha funkcia ktora nefunguje

Zdravím, mam problém s týmto kódom. Neviem prečo ale na konci mi nikdy nevypise 0.01 vid vystup na konci. Za kazdu pomoc dakujem.
Kód:
#include <stdio.h>
float toreturn;
float getChange(float number);
int main(){
               
                toreturn= 50.23;
                if( toreturn > 0 ){
                        printf("\nCollect your payback: ");
                        getChange(100);
                        getChange(50);
                        getChange(20);
                        getChange(10);
                        getChange(5);
                        getChange(2);
                        getChange(1);
                        getChange(0.50);
                        getChange(0.20);
                        getChange(0.10);
                        getChange(0.05);
                        getChange(0.02);
                        getChange(0.01);
}

float getChange(float number){
        while( toreturn >= number ){
                toreturn = toreturn - number;
                printf("%.2f ", number);
                }
}



Collect your payback: 50.00 0.20 0.02


Offline

Užívateľ
Užívateľ
C jednoducha funkcia ktora nefunguje

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3 | 3
Bydlisko: Košice - ok...
NapísalOffline : 12.11.2016 19:02 | C jednoducha funkcia ktora nefunguje

TUKE? :D
skús `double`, ale ja som aj tak s tým pohorel minulý rok a presne na 1 cente, nepresnosť desatinných čísel :D

// úprava
ešte ti nedoporučujem pristupovať k `toreturn` z funkcie, radšej pridaj parameter


_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.03.13
Prihlásený: 09.04.18
Príspevky: 112
Témy: 39 | 39
Napísal autor témyOffline : 12.11.2016 19:23 | C jednoducha funkcia ktora nefunguje

TUKE, TUKE... :D Dakujem za pomoc ;), skusim to


Offline

Užívateľ
Užívateľ
C jednoducha funkcia ktora nefunguje

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3 | 3
Bydlisko: Košice - ok...
NapísalOffline : 12.11.2016 19:29 | C jednoducha funkcia ktora nefunguje

skús aj taký vstup:
Kód:
1404.3
2.01 0.10 20 70 46 40 1 100 9 0.05 14 52 0.05 10 0.50 51 71 43 0.10 0.10 73 73 75 0.05 49 10 88 24 1 2 92 46 68 0.50 0.10 91 50 70

a ešte:
Kód:
39.98
0.50 0.01 0.02 0.20 0.20 2 2 5 0.05 10 20 0


_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.03.13
Prihlásený: 09.04.18
Príspevky: 112
Témy: 39 | 39
Napísal autor témyOffline : 12.11.2016 19:41 | C jednoducha funkcia ktora nefunguje

double mi akosi nepomohlo, stale to robi :(


Offline

Užívateľ
Užívateľ
C jednoducha funkcia ktora nefunguje

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3 | 3
Bydlisko: Košice - ok...
NapísalOffline : 12.11.2016 19:45 | C jednoducha funkcia ktora nefunguje

https://support.microsoft.com/en-us/kb/214118
`round()` môžeš nájsť v <math.h>, skús

// úprava
ale musíš násobiť, lebo sa nedá nastaviť počet desatinných miest cez parameter


_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 12.11.2016 21:24 | C jednoducha funkcia ktora nefunguje

V podstate vôbec nepotrebuješ desatinné čísla. Vstup si vynasob 100 a vrátené peniaze potom zase vydelíš 100. A pôjdeš nie od 100 do 0.01, ale od 10000 do 1.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.03.13
Prihlásený: 09.04.18
Príspevky: 112
Témy: 39 | 39
Napísal autor témyOffline : 13.11.2016 18:11 | C jednoducha funkcia ktora nefunguje

To uz mam poriesene ako tak, ale vyskytla sa mi chyba niekde inde. Potrebujem porovnat 2 float cisla tj. cena ktoru pouzivatel zada (bill) a kolko hodil penazi(overall) bohuzial, float je pri pocitani nepresny a bill ked zadam zo vstupu napriklad 73.23 tak po vypise mi vypise 72.99999998 a ked pocitam bill tak ked presne zadam tych 73.23 dokopy tak sa mi to spocita na 79.9997 napr. Potrebujem bill a overall porovnat v podmienke if( bill == overall ) no samozrejme ze cisla niesu rovnake cize podmienku preskoci a ide na else. Ako sa to da poriesit? Ako mozem formatovat cislo (resp. zaokruhlit) na 2 desatinne miesta? Vdaka


Offline

Užívateľ
Užívateľ
C jednoducha funkcia ktora nefunguje

Registrovaný: 27.06.09
Prihlásený: 04.03.23
Príspevky: 332
Témy: 3 | 3
Bydlisko: Košice - ok...
NapísalOffline : 13.11.2016 18:19 | C jednoducha funkcia ktora nefunguje

knižnica: <math.h> a tam je funkcia round() http://www.cplusplus.com/reference/cmath/round/

// úprava
ak to chceš na dve desatinné miesta tak:
Kód:
cislo = round(cislo * 100.0)/100.0;


_________________
GitHub: mfocko | mfocko.xyz
OSs: archLinux + fedora (+ Windows 10 Pro Insider Preview, only if needed)
Server: archLinux [nginx + Docker (GitLab) + SSH/SFTP + local mirror (FTP/rsync - archLinux, Fedora) + samba + transmission]
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.03.13
Prihlásený: 09.04.18
Príspevky: 112
Témy: 39 | 39
Napísal autor témyOffline : 13.11.2016 18:57 | C jednoducha funkcia ktora nefunguje

Dakujem ;)


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 13.11.2016 19:21 | C jednoducha funkcia ktora nefunguje

Desatinné čísla sa ideálne porovnávajú cez rozdiel, tzn. napr. (abs(a-b) < 0.0001), kde to 0.0001 je požadovaná presnosť.
Je to kvôli reprezentácii čísel, kde aj teoreticky rovnaké čísla môžu byť v pamäti uložené trochu rozdielne a presná zhoda preto väčšinou nefunguje.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
 [ Príspevkov: 11 ] 


C jednoducha funkcia ktora nefunguje



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

jednoducha funkcia

v Backend

7

793

26.12.2007 13:42

Flety

V tomto fóre nie sú ďalšie neprečítané témy.

ajax jednoducha funkcia

v Frontend

7

616

24.04.2010 20:20

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoduchá hashovacia funkcia

v Frontend

3

494

20.09.2014 20:27

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

nefunguje funkcia

v Frontend

3

480

19.03.2011 12:31

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

funkcia mail() nefunguje

v Backend

8

1363

24.11.2009 16:52

programmer

V tomto fóre nie sú ďalšie neprečítané témy.

javascript funkcia nefunguje

v Frontend

3

588

22.08.2010 22:33

neopagan

V tomto fóre nie sú ďalšie neprečítané témy.

nefunguje funkcia trim()

v Backend

3

750

27.10.2011 19:18

Light

V tomto fóre nie sú ďalšie neprečítané témy.

nefunguje funkcia imagefilter()

v Backend

18

981

09.11.2009 21:29

Snacker

V tomto fóre nie sú ďalšie neprečítané témy.

Funkcia date('Y-m-d H:i:s'); nefunguje

v Backend

12

658

28.03.2017 17:36

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha vyhybka

v Zvuk

3

2485

12.01.2010 20:30

KocuR

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha otazka....

v nVidia grafické karty

18

1287

05.05.2008 17:08

luboxxx

V tomto fóre nie sú ďalšie neprečítané témy.

jednoduchá zostava

v Kôš

1

55

05.04.2020 18:19

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha galeria

v Ostatné

1

588

09.02.2010 14:17

don jebot

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoduchá stránka

v Hosting, servery a domény

7

665

06.05.2014 14:09

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

jednoducha kalkulacka

v Backend

6

1591

17.01.2012 15:33

vychytraly

V tomto fóre nie sú ďalšie neprečítané témy.

jednoduchá transakcia mysql

v Databázy

6

1366

22.10.2008 14:03

rooobertek



© 2005 - 2026 PCforum, edited by JanoF