Hogy oldjam meg Free Pascalban? For ciklus?
Kaptunk egy csomó programozásos házit és itt elakadtam. Valaki tudna segíteni a hatványozásban? Még nem csináltunk hatványozást és ez elég nehéz egy csomó mindent próbáltam (neten is kerestem megoldást), de nem megy. A for ciklushoz (for to do)-hoz nem értek mert beteg voltam amikor suliban tanultuk. El tudná magyarázni nekem valaki, hogy mire jó a for ciklus? (suliban kérdeztem a többieket de ők sem tudják elmagyarázni hogy miért kell oda... csak annyit hogy kell, eredetileg forciklus nélkül csináltuk a programokat és ez most új/újabb). A programot le tudom írni csak valahogy ki kéne egészíteni.
program hatvanyozashazi;
uses crt;
var a,h,i:integer;
begin
clrscr;
write('A bekért szám: ');
readln(a);
write('A hatvány: ');
i:=1;
for 1 to h do
i:=i*a;
readkey;
end.
Szia.
Azt hogy minden hatványt kiirjon, csak két egymásba ágyazott csiklusban kehet megoldani, ahol az első ciklus megy a hatványig, a második meg az első ciklusig (1,2,3,4-ig) és az első hatványt speciálisnak vesszük (mivel az is és nem kell szorzásjel) :
a:=5; { a hatványozandó szám }
h:=6; { hatványkitevő }
c:=1; { eredmény }
for i:=1 to h do begin
_ _ c:=c*a; {göngyölitjuk a hatványokat }
_ _ write (a); { kiirjuk a számot}
_ _ For j:=2 to i do begin
_ _ _ _ write ('*',a); { ha kell (2. vagy nagyobb hatvány esetén) kiirjuk a * jelet és a számot is }
_ _ end ;
_ _ writeln ('=',c); { kiirjuk az = elet és az eredményt }
end ;
Sok sikert.
üdv.
@coopper:
Jé, ezt közben én is megírtam... Nálam így ütött ki:
program szorzatos_hatvanyozashazi;
uses crt;
var a, c, h, i, szorzaskiiras_ciklusvaltozoja : integer;
begin
ClrScr;
Write('A bekért szám: ');
ReadLn(a);
Write('A hatványkitevő: ');
ReadLn(h);
WriteLn;
i := 1;
for c:=1 to h do
begin
Write(c, '. hatvány: ');
i := i * a;
if c > 1 then
begin
for szorzaskiiras_ciklusvaltozoja := 1 to c do
begin
Write(a);
if szorzaskiiras_ciklusvaltozoja = c then
Write('=')
else
Write('*');
end;
end;
WriteLn(i);
end;
ReadKey;
end.
Más kérdés, hogy hibakezelés nuku (bocs, SimkoL), úgyhogy igen hamar hülyeségeket ír ki a túlcsordulás miatt.
Kérdező, szerintem jobban jársz, ha nem hiteted el a tanároddal, hogy ezt is megírtad...
Hm, ez a rész inkább így:
if szorzaskiiras_ciklusvaltozoja < c then
Write('*')
else
Write('=');
Nem kell feltétlenül két ciklus. Elég ha egy stringet 'hizlalunk':
program project1;
uses crt;
var
a, c, h, i : integer;
s, s1, s2 : string;
begin
ClrScr;
Write('A bekért szám: ');
ReadLn(a);
Write('A hatványkitevő: ');
ReadLn(h);
WriteLn;
i := 1;
Str(a, s1);
s2 := '*' + s1;
s := '. hatvány: ' + s1;
for c := 1 to h do
begin
i := i * a;
WriteLn(c, s, '=', i);
s := s + s2;
end;
ReadKey;
end.
@#24:
No hiszen, megint a régi nóta... Nemcsak sokkal gazdaságosabb, de még az első hatvány kiírása is pont úgy néz ki, mint Kérdezőnél. Az ember meg csak bambul, hogy neki magának mér' nem jutott az eszébe ez az egyszerű megoldás. Szerintem a tanár is erre gondolt.
(Mellesleg, engem piszkált ez a kétségkívül mély bölcsességű „5=5” kiírás, azt legalább nyugodt lelkiismerettel állíthatom, hogy szándékosan rugaszkodtam el tőle.)
@Kérdező, ha azt is el tudod mesélni sorról sorra, hogy mit csinál SimkoL programja, tőlem mindenesetre megkapod a jelest, de akkor már a tanárod elé is leteheted, mint a saját verejtékes munkád gyümölcsét...
tabaki:
Nem akarom elhitetni senkivel hogy én csináltam. Ilyeneket nem tanultunk és nem is tudok. Stringeket sem tanultunk és azt se hogy többször is lehet "begin"-t és "end"-et írni, tehát még úgyse tudom elmondani amit SimkoL leírt. Köszönöm hogy elmondtad a véleményed és a parancsok jelentését.
5=5, oké ezt lehet hogy fölöslegesen írtam le.
SimkoL:
Köszönöm a programot amit így leírtál, de szerintem ezt így nem írom le, maradok annál ahogy eredetileg volt a hatványozás lépéseinek kiírása nélkül és mondom a tanárnőnek hogy nem tudtam megcsinálni, meg hogy ezt a programot (amilyen most) is csak segítséggel tudtam megoldani.
Én még csak most tanulom ezért nekem nem egyszerű.
Tabaki, SimkoL és coopper megpróbálják elmagyarázni hogyan oldjam meg, hogy ne szoruljak minden programnál segítségre.
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!