Hogyan lehet for ciklussal hatványozást csinálni? (c nyelvben)
Ilyenkor sajnos mindig jön egy barom állat (én), aki el is magyarázza a megoldást, amit már kismillióan megtettek az interneten, csak a kedves kérdező b_szik keresni a neten és venni a fáradságot a probléma megoldására.
A hatványozás valójában az, hogy egy számot valahányszor összeszorzunk önmagával.
Pl. 6 az 5.-en az nem más, mint 6*6*6*6*6
Szóval azt tudni kell, hogy mi a hatványalap és mi a kitevő:
int Alap = 6;
int Kitevo = 5;
Az eredményt valahol tárolni kell. Kiindulva abból a nagy tudásból, hogy minden szám 0. hatványa 1, és kezdetben még egyszer sem szoroztuk össze a számot önmagával, így:
int Eredmeny = 1;
Na most pedig megcsináljuk a szorzást. Azt ugye tudni kell majd, hogy eddig hányszor szoroztuk össze a számot önmagával:
int Lepesek;
for (Lepesek = 1; Lepesek <= Kitevo; Lepesek++)
Eredmeny *= Alap;
Az eredmény az Eredmeny változóban van. Hozzátenném, hogy ez csak olyan esetekben működik, ahol a hatványkitevő természetes szám vagy 0.
Nabasszus, a copy-paste kódot elfelejtettem, ne haragudj!
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main() {
.. setlocale(LC_ALL, "hun"); //Windows alatt csak így lesz ékezetes betű a konzolon.
.. int Alap;
.. int Kitevo;
.. printf("Hatványalap: ");
.. if (scanf("%d", &Alap) != 1) { //Szokás elfelejteni az ilyen ellenőrzéseket. Pedig nem kellene.
.. .. fprintf(stderr, "Nem egész számot adtál meg!");
.. .. return EXIT_FAILURE;
.. }
.. printf("Kitevő: ");
.. if (scanf("%d", &Kitevo) != 1) {
.. .. fprintf(stderr, "Nem egész számot adtál meg!");
.. .. return EXIT_FAILURE;
.. }
.. int Eredmeny = 1;
.. int Lepes;
.. for (Lepes = 1; Lepes <= Kitevo; Lepes++)
.. .. Eredmeny *= Alap;
.. printf("Az eredmény: %d\n", Eredmeny);
.. return EXIT_SUCCESS;
}
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!