Hatványozás Pascalban?
Sziasztok!
Kaptam egy feladatot miszerint a programnak be kell olvasnia egy számot és annak megadja a negyedik hatványát. Nos, ez ugye elég alap feladat, ezért én szeretném annyival bonyolítani hogy bekérje azt is hogy hányadik hatványára vagyunk kíváncsiak a számnak.
Egy példa: beírjuk hogy a szám legyen 2, megkérdezi hogy hányadik hatványa érdekel, beírjuk hogy a 2. és kiírja az eredményt.
Volt egy ötletem ami sajnos csak ötlet marad.. Az hogy case of elágazással írom meg, pl: case hatvany of 1 : szam; 2 : szam * szam; 3 : szam * szam * szam stb..
Ugye ez elég hülyeség lenne és még hosszadalmas is.. Soha nem érnénk a végére. Van valami más módja ennek?





Ha választható akkor az eléggé keresztbe tesz, a bonyolultságának:
5^2
5^0
5^0.5
5^1.5
5^-1.75





Most olvastam végig a kérdést.
Ez így nem túl elegáns.
A CASE-zel választod ki a kitevőt és ahol a selekció érvényesül, ott hívódik meg a függvény (amely a hatványozást végzi) a függvény paraméterei pedig az alap és a kitevő.





De miért kellene case?
x^y esetében, ahol y >=0
Nyilván a nem egész és negatívokat jelen esetben nem akarja kezelni, mert a ciklus is probléma.
result = 1
for i = 0 to y-1
..result *= x
..++i
return result





Nem feltétlenül kell CASE, sőt, de ha Ő szeretne?
Elvégre tanul.





Esetleg még rekurzióval is lehet ha úgy könnyebb:
függvény hatvány(alap, kitevő):
. . ha kitevő == 0:
. . . . visszatér 1-gyel.
. . visszatér hatvány(alap, kitevő - 1) * alappal.





Csak egész számokkal működik (1 és 10 közötti), Free Pascallal fordítható.
program Project1;
{$mode objfpc}{$H+}
uses
SysUtils;
var
alap, kitevo, i, eredmeny:int64;
begin
Repeat
Write('Alap: ');
Readln(Alap);
Until (alap>=1) and (alap<=10);
Repeat
Write ('Kitevo: ');
Readln(Kitevo);
Until (kitevo<=10) and (kitevo>=1);
eredmeny:=alap;
for i:=1 to kitevo-1 do
begin
writeln(i,' ',eredmeny);
eredmeny:=eredmeny*alap;
end;
Write('Eredmeny: ',eredmeny);
Readln;
end.










"Nem feltétlenül kell CASE, sőt, de ha Ő szeretne? Elvégre tanul."
Muszáj ezt a hülyeséget nyomatni?
Én már ott problémát látok, hogy tudja a kérdező, hogy mi az a for ciklus, de egy hatványozáshoz mégis a case-t akarja használni.
(mentségére szóljon, már a kérdésben is leszögezte, hogy szerinte ez hülyeség, leglább ne tereljük már el ettől a szép gondolatától, jó?)





#18:
"Muszáj ezt a hülyeséget nyomatni?"
A stílus maga az ember.
#18
Légyszíves ne ilyen arrogáns módon beszélj! Köszönöm! Mint már említettem, rájöttem magamtól is hogy nagy butaság lenne többszörös elágazással szórakozni, illetve magam is rájöttem hogy for ciklust kell használni, ezért is kérdeztem tőled még az elején hogy arra gondolsz-e. Egyedül a megvalósítással volt probléma, de valaki linkelt egy előző kérdést ahol ez a program tökéletesen le van írva. Köszönöm szépen a segítséget!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!