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
 11/26 A kérdező kommentje:

2. válaszoló, megkérhetlek hogy írd le a teljes programot nem baj ha c++-ban mert át tom írni csak legyen meg úgy is.

Köszi.

2012. máj. 7. 20:44
 12/26 anonim ***** válasza:
Azért mert kicsúszik a számtartományból amit az integer ábrázolni tud.
2012. máj. 7. 20:45
Hasznos számodra ez a válasz?
 13/26 A kérdező kommentje:
Hát nem tom mert próbáltam longint-el is de azzal sem működött rendesen.
2012. máj. 7. 21:10
 14/26 iostream ***** válasza:
A long int sok platformon pont akkora, mint a sima: 4 byte. Hidd el, hogy azért lett negatív, mert túlcsordult az int. Próbáld meg long long-al, de az sem garantált, hogy elég nagy lesz.
2012. máj. 7. 21:14
Hasznos számodra ez a válasz?
 15/26 anonim ***** válasza:

"Próbáld meg long long-al, de az sem garantált, hogy elég nagy lesz."

Mármint Int64-el.(Pascalba vagyunk nem c-be)


C++ - ba van olyan függvénykövtár amibe lehet kezelni nagyon nagy számokat nagyon pontosan illetve lehet hozzá írni és ugyanúgy lehet használni mintha sima változó lenne.(Ami a c++ nagy erőssége.) Ez pascalba nehézkesebb lenne megoldani.

2012. máj. 7. 21:39
Hasznos számodra ez a válasz?
 16/26 zsomkovacs ***** válasza:

Ha gondolod, akár még én is tudok neked c++-hoz olyan típust küldeni, ami 2^32 számjegyig pontosan tárolja az egészeket, sőt, hatványozni is tud.


De amúgy az én Pascal kódom, amit írtam, nem jó?

2012. máj. 7. 22:11
Hasznos számodra ez a válasz?
 17/26 A kérdező kommentje:

Nagyon köszönöm a segítséget, megoldottam:

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. 13. 19:38
 18/26 anonim ***** válasza:

@19:38

E szerint csak az 1 nulladik hatványa 1, ez meg nem hiszem hogy jó. A hatvany függvénynek felesleges 4 paraméter 2 elég lenne.

Amit @zsomkovacs írt pascal kódot az miért nem jó kérdező?

2012. máj. 13. 21:44
Hasznos számodra ez a válasz?
 19/26 A kérdező kommentje:
Utolsó, ha nem vetted volna észre ez zsomkovics programjának javított változata mert amit ő írt az csak egy program részlet volt c++ és pascal összekeverésével.De az alapötlet és elv tőle származik.
2012. máj. 14. 21:52
 20/26 anonim ***** válasza:

"# 7/19 Időpont 05-07 09:32"

"Ne csinálj tömböt, attól nem lesz rekurzív, cserébe pazarlod a memóriát és lassítod a programot. A hatványozás így néz ki (ha nem rontom el, rég Pascaloztam, mostanában inkább C++-t használok):


Function hatvany(alap: LongInt, kitevo: Byte): LongInt;

Begin

If (kitevo=0) Then

hatvany:=1

Else

hatvany:=alap*hatvany(alap, kitevo-1);

End;


Vagy egy szintén rekurzív, ám sokkal gyorsabb hatványozás:


Function hatvany(alap: LongInt, kitevo: Byte): LongInt;

Begin

If (kitevo=0) Then

hatvany:=1

Else

Begin

If ((kitevo Mod 2)=0) Then

hatvany:=hatvany(alap, kitevo Div 2)*hatvany(alap, kitevo Div 2)

Else

hatvany:=alap*hatvany(alap, kitevo-1);

End;

End;"


Kérdező ha nem vetted volna észre, ez nem programrészlet c++ és pascal összekeverésével, hanem pascal programrészlet,ahol szabálytalanul egy pontosvessző helyett vessző van írva különben jó és jól is működik a longint értelmezési tartományán belül.

A tied meg nem jó leírtam miért.

2012. máj. 14. 22:47
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!