Toon posts:

[C++] derdemachtswortel

Pagina: 1
Acties:
  • 752 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Een vriend van me is bezig met C++ programma, en vroeg aan mij hoe je derdemachtswortel kan trekken in dat programma. Nou weet ik niet veel van c++ en hebben we allebei geen handleiding ofzo bij de hand, maar wel redelijk wat van wiskunde, dus ik kwam tot:
code:
1
derdemachtswortel uit 8 = 8^(1/3)


hetgeen correct is, gezien ook 8^(1/3) = 2

nou krijgt hij de volgende resultaten in C++ (om de ^operator te testen)
code:
1
2
10^2 = 8
22^4 = 22


das dus niet correct, dus raadde ik hem de functie 'pow' aan, die iig in Math.pow zit in Java, dus pow(getal, tot-de-macht)
zou dus worden:
code:
1
printf ("pow(8, 1/3) = %d\n", pow(8, 1/3));


maar dit geeft 0, andersom (dus [pow(1/3), 8]) geeft ook 0.

Conclsie: hoe moet je derdemachtswortel trekken in C++?

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Verwijderd schreef op 15 oktober 2002 @ 23:15:
code:
1
printf ("pow(8, 1/3) = %d\n", pow(8, 1/3));


maar dit geeft 0, andersom (dus [pow(1/3), 8]) geeft ook 0.
pow is goed, %d niet. %f gebruik je voor floating-point getallen.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

1 en 3 zijn beide integers, dus het resultaat van die deling is ook een integer. Dat wordt naar beneden afgerond, en er komt dus 0 uit.

edit:
Je moet dus 1/3.0 schrijven


Wordt dus:

code:
1
2
3
4
5
6
7
#include <iostream>
#include <math.h>

int main() {
   std::cout << pow(8, 1/3.0) << std::endl;
   return 0;
}

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 22-08 16:45
Getallen worden standaard als integer gezien. Dit geeft 1/3 = 0, daarom geeft pow(8, 1/3) als antwoord 1. Omdat je die verkeerd print (zoals Poohbear al zei), zie je een 0 verschijnen.
Oplossing: pow(8. , 1. / 3.)

Verder is ^ de XOR operator.

Verwijderd

Topicstarter
we zijn eruit

ik weet dat het niet mag, maar bedankt :D

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 15 oktober 2002 @ 23:15:
nou krijgt hij de volgende resultaten in C++ (om de ^operator te testen)
code:
1
2
10^2 = 8
22^4 = 22
Mmmmmmm....
C++:
1
2
3
4
5
6
7
8
9
  01010 = 10
 ^00010 = 2
 ------
  01000 = 8

  10110 = 22
 ^00100 = 4
 -----
  10010 = 18

Volgens mij is er iets mis met jouw compiler en/of CPU...:P

Professionele website nodig?


Verwijderd

nee hoor, lijkt mij niet... 10 xor 2 = 8, en 22 xor 4 = 18 :)

oops... foutje :) ik keek naar de verkeerde text, er is idd wat mis :P

[ Voor 0% gewijzigd door Verwijderd op 16-10-2002 10:46 . Reden: ik kijk nooit verder dan m'n neus lang is ]

Pagina: 1