Kezdőoldal » Számítástechnika » Programozás » Hogy oldjam meg Free Pascalban...

Adamhu99 kérdése:

Hogy oldjam meg Free Pascalban? For ciklus?

Figyelt kérdés

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.



2015. szept. 15. 18:50
1 2 3 4 5
 21/45 coopper ***** válasza:

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.

2015. szept. 15. 22:04
Hasznos számodra ez a válasz?
 22/45 tabaki ***** válasza:

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

2015. szept. 15. 22:23
Hasznos számodra ez a válasz?
 23/45 tabaki ***** válasza:

Hm, ez a rész inkább így:


if szorzaskiiras_ciklusvaltozoja < c then

      Write('*')

else

      Write('=');

2015. szept. 16. 01:24
Hasznos számodra ez a válasz?
 24/45 SimkoL ***** válasza:

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.

2015. szept. 16. 08:27
Hasznos számodra ez a válasz?
 25/45 tabaki ***** válasza:

@#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...

2015. szept. 16. 10:13
Hasznos számodra ez a válasz?
 26/45 A kérdező kommentje:

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.

2015. szept. 16. 16:34
 27/45 anonim ***** válasza:
Hihetetlen, hogy egy egyszerű hatványszámításból 3 oldalt tudtok csinálni :D
2015. szept. 16. 16:37
Hasznos számodra ez a válasz?
 28/45 A kérdező kommentje:

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

2015. szept. 16. 16:42
 29/45 tabaki ***** válasza:
De a for-ciklus működése már legalább világos?
2015. szept. 16. 17:09
Hasznos számodra ez a válasz?
 30/45 A kérdező kommentje:
Nagyjából értem.
2015. szept. 16. 17:13
1 2 3 4 5

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!