Avatar billede Kristian H Nybegynder
25. december 2003 - 16:26 Der er 13 kommentarer og
1 løsning

Division af to tal

Hej

Jeg har to tal, det ene i CSpinEdit1 og det andet i CSpinEdit2. Hvordan dividere jeg de to tal med hinanden?

-TuDack
Avatar billede jakobdo Ekspert
25. december 2003 - 17:19 #1
Jeg går ud fra CSpinEdit1 og CSpinEdit2 er EditBokse...
Resultat = CSpinEdit1->Text.ToInt() / CSpinEdit2->Text.ToInt()...

Evt skal du teste på CSpinEdit1.Text > 0...

Altså så:

if (CSpinEdit1.Text > 0)
Resultat = CSpinEdit1->Text.ToInt() / CSpinEdit2->Text.ToInt();
else
Resultat = "Et eller andet som ikke gik godt";
Avatar billede Kristian H Nybegynder
25. december 2003 - 17:42 #2
Og hvis jeg gerne vil have resultatet i float i stedet for Int?
Sorry, jeg er lige begyndt på C++, så er ikke lige så hardcore...

-TuDack
Avatar billede bertelbrander Novice
25. december 2003 - 18:02 #3
Hvis de to edit boxe indeholder ints:

Resultat = 1.0*CSpinEdit1->Text.ToInt() / CSpinEdit2->Text.ToInt();

Du kan bruge strtod() hvis de to edit boxe indeholder floats/doubles.

(Jeg kan ikke finde nogen ToInt() i MSDN).
Avatar billede Kristian H Nybegynder
25. december 2003 - 18:37 #4
bertelbrander>
Jeg kan ikke få strtod() til at virke....

ToInt() virker fint hvis resultatet kun skal være i hele tal, det skal det bare ikke....
Avatar billede arne_v Ekspert
25. december 2003 - 20:06 #5
Vi er over i Borland C++ Builder ikke MS VC++ !

Prøv og erstat ToInt med ToDouble !

(den skulle returnere en double)
Avatar billede bertelbrander Novice
25. december 2003 - 20:26 #6
Resultat = strtod(CSpinEdit1->Text.c_str(), 0) /strtod(CSpinEdit2->Text.c_str(), 0);

Borland plejer at være TSpin1, CSpin1 ligner mere MSVC++.
Avatar billede Kristian H Nybegynder
25. december 2003 - 20:28 #7
Super arne_v, nu virker det bare, nu får jeg et mega langt komma tal, hvordan gør jeg sådan at jeg kun får et vis antal decimaler?
Avatar billede arne_v Ekspert
25. december 2003 - 20:34 #8
Normalt vil du styre det ved at formatere når du skal have tallet vist.

Måske noget a la:

char buf[18];
sprintf(buf,"%10.2f",x);

og så putte buf over i hvor det nu skal vises.

10.2 = 7 tal + 1 punktum + 2 decimaler
Avatar billede arne_v Ekspert
26. december 2003 - 20:25 #9
OK ?
Avatar billede Kristian H Nybegynder
27. december 2003 - 16:50 #10
Ved ikke helt hvad jeg skal gøre af "sprintf(buf,"%10.2f",x);"

-TuDack
Avatar billede arne_v Ekspert
27. december 2003 - 16:52 #11
buf er en streng som tallet skal ned i - x er tallet
Avatar billede Kristian H Nybegynder
27. december 2003 - 17:23 #12
Mit C++ Builder genkeder ikke sprintf....
Avatar billede arne_v Ekspert
27. december 2003 - 18:10 #13
Hvis du inkluderer stdio.h så gøre den !
Avatar billede Kristian H Nybegynder
27. december 2003 - 19:12 #14
Super nu virker det bare.... takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis