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.
A kezdőszámtól a határszámig (itt 1-től h-ig, vagyis h-szor) ismétli az utána következő utasítást. Ez most nálad egyetlen szorzás:
i := i * a;
Ennek az alapján azt hiszem, elég könnyű megérteni, hogyan hatványoz a program. Mivel kéne kiegészíteni?
az a baj hogy nem indul a program. Azt hittem rosszul írtam meg a programot.
Ezt írja: "Compile failed"
és "Total errors: 4".
Hüm, egy kissé pongyolán fogalmaztam, mivel ez egy értékadás, és pont az a lényege, hogy a szorzás eredménye ugyanabba a változóba kerüljön, és az szorzódjon tovább.
El tudod mesélni sorról sorra, hogy mi miért kell, és mit csinál?
Szia.
Sok baj van itt, nézzük sorban :
1. Nem i:=1; hanem a:=1; feltéve ha az a-ban lesz a hatványozás éredménye.
2. For ciklus nem igy : for 1 to h do hanem igy : for i:=1 to h do (a jövőre nézve szerintem mindig begin end közé téve az utasitást vagy utasitásokat)
3. Étrékadás : nem i:=i*a, (ha az i a ciklusváltozó akkor hibát fog adni) hanem a:=a*i;
Illetve ki is kellene iratni az eredményt :
writeln ('Hatványozás eredménye : ',a);
Egyben az egész :
a:=1;
for i:=1 to h do begin
_ _a:=a*i;
end ;
writeln ('Hatványozás eredménye : ',a);
readkey;
Sok sikert.
üdv.
illetve még a bekérés sem jó, mivel nem a-t kell bekérni hanem h-t (vagy akkor ha a-t kéred be akkor h lesz az összeg,) mindegy most nézzük h bekéréssel :
write('A bekért szám: ');
readln(h);
Nincs ciklusváltozó + csak kiírod a kérést, de nem kéred be a hatványt + nem íratod ki a végeredményt.
A ciklusváltozó az, ami a megadott határok között változni fog, különben mit számolna a program? Például így:
for C := 1 to h
+ bocs:
for C := 1 to h do
(amúgy meg megint jól lekéstem)
Nem mindet tudom elmondani. De megpróbálom:
1. sor "program..." a program neve
2. sor "uses crt" erre nem emlékszem (azt tudom hogy ezt mindig ki kell írni)
3. sor "var..." a változók megadásához szükséges (nem csak integer lehet, van real és még sok más)
4. "begin" (ha jól emlékszem) hogy elinduljon a program
5. sor "clrscr" ez a clearscreen, a képernyőt "letörli"
6. sor a szöveg (ezt adja ki a kész program és ide kérünk be egy számot) a "readln(a);" megjegyzi (vagy hasonló) azt a számot és innentől azzal dolgozik ha "a" karaktert lát (pl.) egy egyenletben.
A write('A hatvány: '); alatt még ott a "readln(h);" is csak ez lemaradt
i:=1; ezt nem tudom
for 1 to h do itt ciklusonként bekéri 1-től a "h" értékéig a számokat és elvégzi a műveletet "i:=i*a;" (lehet hogy itt lenne a hiba?)
readkey; nem egyből jelenjen meg a program, csak egy billentyűkombináció megnyomására (parancsgomb a fordítás, elvileg)
end. a program vége.
úgy csináltam ahogy mondtad.
"exited with exitcode: 1"
az "a" lenne a szám
a "h" lenne amennyivel hatványozni szeretném
az "i" az ami a forciklussal foglalkozik
igen van olyan hogy "readln(h);" azt véletlenül nem írtam ide, kimaradt itt
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!