Hogyan lehet ciklussal egy tetszőleges számot tetszőleges hatványra emelni? (c nyelvben) ;
Ciklus nélkül
pl:
int a=5;
a=pow(a,2);
printf("%i",a);
de így "lecsípi" a végét így az eredmény 24, ami helytelen.
Ezért akkarom ciklussal, vagy esetleg ha egész számok esetén lenne, olyan függvény ami hatványoz helyesen az is jó lenne.
Szia.
Ciklussal pediglen így valahogy :
for (i = 1; i < 2; i++) {
_ _a*=a;
}
Sok sikert.
üdv.
Bocsi, a fenti kód nem jó, talán ez jó lesz :
int e=1;
for (i = 0; i < 3; i++) {
_ _e=e*a;
}
printf("%i",e);
Sok sikert.
üdv.
Kissé zarart érzek az Erőben kedves Kérdező...
Írod:
"int a=5;
a=pow(a,2); "
és
"de így "lecsípi" a végét így az eredmény 24, ami helytelen. "
5 a négyzeten (5 ^ 2 vagyis 5 * 5) az 25 - semmiképpen nem kaphatsz 24-es eredményt.
Ha lecsípi, hát kerekítsd:
a=round(pow(a,2));
"Azért, mert a pow az double-t ad vissza"
Oké, ez rendben,
"és valószínűleg 24.999999 lehet az eredmény, aminek a végét levágja az int minatt"
viszont mi indukálja a hibás eredményt?
Kérdező, milyen fordítót használsz, milyen környezetben?
GCC 4.8.4, clang 3.4 fordítónál 64 bites xubuntu 14.04 operációs rendszernél, Intel i5 4570 proceszornál nekem nem fordult elő - bár elképzelhető bizonyos esetekben "kerekítési hiba": itt is ilyesmiről értekeznek: [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!