Tömb elemeinek az összeszorzása és hatványozás rekurzívan pascalban?
Adott a feladat:Irjunk rekurzív függvényt, ami kiszámolja az a–t a b-ediken.
Ezt a feladatot próbáltam megoldani tömbbel kevés sikerrel mert már nem tudom hogy kell a tömb elemit összeszorozni.
Megpróbáltam úgy hogy a k:=k*t[i] de a k mégis 0 marad.
Kérlek segítsetek akár a teljes feladattal akár csak az összeszorzással kapcsolatban.
És megmondanád hogy ez miért nem jó,mert még mindig nem tudok rájönni:
var a,b,c:longint;
function hatvany(a,b,i:longint;var c:longint):real;
begin
if i<=b-1 then
begin
a:=a*c;
hatvany:=hatvany(a,b,i+1,c);
end else hatvany:=a;
end;
begin
readln(a,b);
c:=a;
writeln(hatvany(a,b,1,c):0:0);
readln;
end.
Mondjuk ezt leírtam a #18/21 Időpont tegnapelőtt 21:44 hozzászólásba:"E szerint csak az 1 nulladik hatványa 1, ez meg nem hiszem hogy jó"...
Írd be a programnak hogy
5
0
1-et kéne hogy adjon, mert minden szám 0. hatványa 1, nem tudom már érthetőbben magyarázni.
--------------------------------------------------------
A másik amit nem írtam, hogy real-al térsz vissza, mert a real nagyobb számokat tud ábrázolni mint a longint, de hiába mert a:=a*c ahol a és c longint, longint-on belül van elvégezve a szorzás, ha túlcsordult akkor ez a túlcsordult érték fog belekerülni real-ba.
Csak próbáld ki ha nem hiszed 12 12 -vel egy negatív számot kapsz.
"Ráadásul a real sem lesz pontosabb, mint a longint, hiszen a bitje nem több"
Erre én is gondoltam csak nem említettem meg, mert:
1: Bizonyos értelemben jobb egy kerekített (pontatlan) érték mint egy negatívba átmenő túlcsorduló érték.
2: az hogy mennyire pontos a real az implementáció függő, van amelyik implementációban a longint tartományon kívül valameddig pontosan ábrázolhatóak az egész számok, van amelyikben azon belül sem mind, az viszont mindegyikben igaz hogy bizonyos küszöbértéktől kezdve nem ábrázolhatóak pontosan az egész számok.
3:Reméltem hogy a kérdező magától észreveszi hogy valami nem stimmel a nagy számokkal
Igen, észrevettem.Kijavítottam, a-t és c-t is real-ba tettem, és a 12-12 re kiadja csak kerekít mert normálisan
8916100448256 és ezt irja ki 8916100448300 tehát felékerekített viszont mostmár nem csordúl túl.Viszont a ö hatványra tényleg nem működik jól, azt hogyan javíthatom?
Egyébként aki tud segítsen ebben a kérdésben is, fontos,előre is kösz aki segít: http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..
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!