Kezdőoldal » Számítástechnika » Programozás » Mi a probléma és hogy kezdjem el?

David134 kérdése:

Mi a probléma és hogy kezdjem el?

Figyelt kérdés

A feladatom egy hullámvasút kprogramozása a pascalban

Odáig hogy a pályát megrajzoltam eljutottam viszont a pályán a kocsit végigvinni vagy egyátalán elhelezni nem sikerült és még hibát is ír ki

program hullamvasut;

uses crt;

var x,y:byte;

begin

gotoxy(2,22);

write('----------');

gotoxy(12,22);

write('/');

gotoxy(13,21);

write('/');

gotoxy(14,20);

write('/');

gotoxy(15,19);

write('/');

gotoxy(16,18);

write('/');

gotoxy(17,17);

write('/');

gotoxy(18,16);

write('/');

gotoxy(19,15);

write('/');

gotoxy(20,14);

write('/');

gotoxy(21,13);

write('/');

gotoxy(22,12);

write('_____________');

gotoxy(35,13);

write(chr(92));

gotoxy(36,14);

write(chr(92));

gotoxy(37,15);

write(chr(92));

gotoxy(38,16);

write(chr(92));

gotoxy(39,17);

write(chr(92));

gotoxy(39,17);

write('______');

gotoxy(45,17);

write('/');

gotoxy(46,16);

write('/');

gotoxy(47,15);

write('/');

gotoxy(48,14);

write('/');

gotoxy(49,13);

write('/');

gotoxy(49,13);

write('___________');

gotoxy(60,14);

write(chr(92));

gotoxy(61,15);

write(chr(92));

gotoxy(62,16);

write(chr(92));

gotoxy(63,17);

write(chr(92));

gotoxy(62,17);

write('_________');

gotoxy(2,22);

write(chr(223));

for x:=1 to 80 do

begin

case x of


1..8:y:=23;

9: y:=22;

10: Y:=21;

11: Y:=20;

12: Y:=19;

13: Y:=18;

14: Y:=17;

15: y:=16;

gotoxy(x,y);

write('j');

end;//case

end;//for

end;

readln;

end.



2016. márc. 2. 15:58
1 2
 1/13 anonim ***** válasza:
Kezdhetnéd úgy, hogy értelmesen definiálod a problémát.
2016. márc. 2. 16:05
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
A probléma az hogy az itt alul látható sort:gotoxy(x,y);-nál hibát talál csak nem tudom miért mert minden megvan
2016. márc. 2. 16:07
 3/13 anonim ***** válasza:
Az nem gond, hogy az y-t néha nagy, néha kisbetűvel írtad?
2016. márc. 2. 16:10
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:

A pascal kis és nagybetűre érzéketlen.

A kérdező kódja viszont nagyon meredek.

2016. márc. 2. 16:19
Hasznos számodra ez a válasz?
 5/13 anonim ***** válasza:
A CASE-en belül vagy a gotoxy-oddal!
2016. márc. 2. 16:25
Hasznos számodra ez a válasz?
 6/13 SimkoL ***** válasza:

program hullamvasut;


uses Crt;


var x, y: byte;


begin

GotoXY(2, 22);

Write('------');

GotoXY(12, 22);

Write('/');

GotoXY(13, 21);

Write('/');

GotoXY(14, 20);

Write('/');

GotoXY(15, 19);

Write('/');

GotoXY(16, 18);

Write('/');

GotoXY(17, 17);

Write('/');

GotoXY(18, 16);

Write('/');

GotoXY(19, 15);

Write('/');

GotoXY(20, 14);

Write('/');

GotoXY(21, 13);

Write('/');

GotoXY(22, 12);

Write('______');

GotoXY(35, 13);

Write(chr(92));

GotoXY(36, 14);

Write(Chr(92));

GotoXY(37, 15);

Write(Chr(92));

GotoXY(38, 16);

Write(Chr(92));

GotoXY(39, 17);

Write(Chr(92));

GotoXY(39, 17);

Write('______');

GotoXY(45, 17);

Write('/');

GotoXY(46, 16);

Write('/');

GotoXY(47, 15);

Write('/');

GotoXY(48, 14);

Write('/');

GotoXY(49, 13);

Write('/');

GotoXY(49, 13);

Write('______');

GotoXY(60, 14);

Write(Chr(92));

GotoXY(61, 15);

Write(Chr(92));

GotoXY(62, 16);

Write(Chr(92));

GotoXY(63, 17);

Write(Chr(92));

GotoXY(62, 17);

Write('______');

GotoXY(2, 22);

Write(Chr(223));

for x := 1 to 80 do

begin

case x of

1..8: y := 23;

9: y := 22;

10: y := 21;

11: y := 20;

12: y := 19;

13: y := 18;

14: y := 17;

15: y := 16;

end;

GotoXY(x, y);

Write('j');

end;

ReadLn;

end.

2016. márc. 2. 16:26
Hasznos számodra ez a válasz?
 7/13 anonim ***** válasza:

Itt a kimeneted, talán ez segít:


[link]

2016. márc. 2. 16:35
Hasznos számodra ez a válasz?
 8/13 tabaki ***** válasza:

A fő probléma az, amit #5 (meg a hibaüzenet is) írt, hogy a

gotoxy(x,y);

write('j');

sorokat a CASE utasítás feltételeként akarod lenyeletni a fordítóval, de mivel ez értelmetlen, nem is tudja lefordítani. Ezen túl viszont egészen riasztó a kódod. Lehet, hogy eljárásokról még nem tanultatok, de tömbökről sem, amelyben adatokat lehetne tárolni? Ha már egyszer ismered a FOR ciklust, ismered a CASE-t: A pálya tulajdonképpen három dolgot csinál: emelve, süllyedve vagy változatlan magasságban halad előre. Az ezt intéző egy-két utasítás mehetne a CASE ágaiba, ahol a ciklusban beolvasott adatok alapján döntené el a program, mit csináljon. Az embertelen mennyiségű gépelés helyett letudnád az egészet néhány sorban, ráadásul ugyanezekhez a pályaadatokhoz igazodhatnál a vonattal.

Így belegondolva, ez egy kifejezetten jó kis játékos feladat, csak nem ész nélkül kell nekiesni. Még dolgozz rajta.

2016. márc. 4. 08:10
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:
Köszönöm a kommenteket segítettek már megcsináltam és működik
2016. márc. 4. 21:28
 10/13 tabaki ***** válasza:

Akkor szerintem tegnap este fél tíztől lett volna érdemes bemutatnod, hogy mit csináltál, és vajon lehet-e még csiszolgatni rajta, de nem számít, nyilván olyasmi lett, mint az enyém:


program hullamvasut;

uses crt;


const

lepes = 100;

vonatHossz = 7;

     

var

x, y, v :byte;

vonat : string[vonatHossz + 1] = #32#116#97#98#97#107#105#32;

vy : array[0..vonatHossz] of byte;

palyaAdat: string[80] = '---------//////////-------'#92#92#92#92#92+

'------////////------'#92#92#92#92'---------'#92#92#92#92#92#92#92#92+

'--------';


begin

CursorOff;

y := 22;

for x := 1 to Length(palyaAdat) do

begin

      case palyaAdat[x] of

      #92: Inc(y);

      '/': Dec(y);

      else

            begin

                  if palyaAdat[x - 1] = '/' then Dec(y)

                  else if palyaAdat[x - 1] = #92 then Inc(y);

            end;

end;

GotoXY(x,y); Write(palyaAdat[x]);

end;

y := 21; GotoXY(1,y); Write(vonat);

Delay(2000);

for x := 1 to Length(palyaAdat) - vonatHossz do

      begin

            case palyaAdat[x] of

            #92: Inc(y);

            '/': Dec(y);

            else

                  begin

                        if palyaAdat[x - 1] = '/' then Dec(y)

                        else if palyaAdat[x - 1] = #92 then Inc(y);

                  end;

            end;

            vy[0] := y; GotoXY(x, vy[0]); Write(vonat[1]);

            for v := 1 to vonatHossz do

                  begin

                        vy[v] := vy[v-1];

                        case palyaAdat[x + v] of

                        #92: Inc(vy[v]);

                        '/': Dec(vy[v]);

                        else

                              begin

                                    if palyaAdat[x +v - 1] = '/' then Dec(vy[v])

                                    else if palyaAdat[x + v - 1] = #92 then Inc(vy[v]);

                              end;

                        end;

                        GotoXY(x + v, vy[v]); Write(vonat[v + 1]);

                  end;

            Delay(lepes);

      end;

ReadLn;

CursorOn;

end.

2016. márc. 5. 17:16
Hasznos számodra ez a válasz?
1 2

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!