Kezdőoldal » Számítástechnika » Programozás » Tömb elemeinek az összeszorzás...

Tömb elemeinek az összeszorzása és hatványozás rekurzívan pascalban?

Figyelt kérdés

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.



2012. máj. 6. 15:31
1 2 3
 21/26 A kérdező kommentje:

É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.

2012. máj. 15. 16:29
 22/26 anonim ***** válasza:

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.

2012. máj. 15. 19:36
Hasznos számodra ez a válasz?
 23/26 iostream ***** válasza:
Ráadásul a real sem lesz pontosabb, mint a longint, hiszen a bitje nem több (na jó, lehet kétszer akkora is, de a "hasznos" bitek száma így is korlátozott), ellenben nem fog feltűnni, mert nem megy át minuszba, csak simán pontatlan lesz. Szóval egész számok hatványozását érdemes egész számok között elvégezni.
2012. máj. 15. 19:51
Hasznos számodra ez a válasz?
 24/26 anonim ***** válasza:

"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

2012. máj. 15. 21:01
Hasznos számodra ez a válasz?
 25/26 A kérdező kommentje:

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_..

2012. máj. 18. 22:17
 26/26 zsomkovacs ***** válasza:
Esetleg ha végre alaposan megnézed azt a kódot, amit küldtem már tudom is én, mikor, feltűnhet, hogy én a kitevőt csökkentgetem a rekurzív hívás során, a kilépési feltételem a kitevo=0, a visszatérési érték ez esetben 1. Nem véletlenül. Ha nálam az alapot Real-ként deklarálod, akkor menni fog nagy számokra is...
2012. máj. 19. 06:11
Hasznos számodra ez a válasz?
1 2 3

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!