Datuve :: Forums :: Arhīvs :: Kāpēc man "str" nestrādā kā vajadzētu (pascal)?

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 266

Reģistrētie lietotāji online: 0

Viesi online: 266

Datuve.lv video
Top.LV

Kāpēc man "str" nestrādā kā vajadzētu (pascal)?

Ievietoja: normis_161 @ 2008.05.14 18:04  

Kāds man lūdzu varētu pateikt, kāpēc man īsti "str" nedarbojas? Viņam vajadzētu izvadīt divus skaitļus. Viens norāda cik reizes ir trāpīts, otrs cik reizes nav trāpīts. Bet tā vietā viņš man visu laiku izvada divus skaitļus - 132 un 5807. Es īsti nesaprotu, kur man tā kļūda varētu būt.
Procedure RandomShip;
var i, x2, y2, poz, neg : integer;
   x1, y1, par, pret :string;
Begin
   clrscr;
       For i:=1 To sk Do
           Begin
               clrscr;
               a:=Detect;
               InitGraph(a,b,'  ');
               cleardevice;
               ........................
       
               {Parbaude vai trapits, vai nav}
               colour:=GetPixel(ievX, ievY);
                   If (colour = BROWN) or (colour = RED) or (colour =    GREEN) or (colour = MAGENTA) or (colour = CYAN) then
                      begin
                      OutTextXY(8,60,'TRAPIJI');
                      poz:=poz+1;
                      end
                   else
                      begin
                      OutTextXY(8,60,'NETRAPIJI');
                      neg:=neg+1;
                      end;

                      str(poz,par);
                      OutTextXY(250,250,par);
                      str(neg,pret);
                      OutTextXY(200,200,pret);
                      readln;

               {punkta atliksana}
               SetColor(yellow);
               SetFillStyle(1,yellow);
               Circle(ievX,ievY,5);
               FloodFill(ievX,ievY,yellow);
      readln;
           End;
       
End;

Komentāri:

#1 clalbus @ 2008.05.14 19:24

Tavā procedūrā "RandomShip" ko tu dari ? Tikai skaties vai trāpīts ir ? Vai arī visa spēle tur ir ? Neredzot visu kodu un nezinot, kas vispār notiek, es minētu, ka par, pret, poz, neg ir lokālie mainīgie, kuriem netiek piešķirtas sākuma vērtības ( it īpaši poz, neg )..

#2 normis_161 @ 2008.05.14 19:36

Paldies. Tu man pasviedi ideju un man sanāca izlabot (es tos mainīgos pierakstīju pie galvenā var un no procedūras var izdzēsu). Tikai es nesaprotu, kāpēc ir tāda atšķirība?

#3 clalbus @ 2008.05.14 19:38

Tāpēc, ka tad, kad tu izveido mainīgo, tam tiek piešķirta adrese atmiņā, bet tā adrese netiek "iztīrīta" un tavs mainīgais satur to, kas ir tajā atmiņas gabalā. Kad izveido mainīgos, tiem ir jāpiešķir kāda vērtība ( tādu, kādu vajag ), bet parasti 0. Bet tev tik un tā ir jāpiešķir sākuma vērtības mainīgajiem poz, neg, es ieteiktu 0.

#4 MOD @ 2008.05.14 22:25

Lieta tāda, ka ja Tu mainīgo definē programmas sākumā tad tas ir globālais mainīgais, un ja pēc tam vēl tādu pašu nodefinē procedūrā tad viņš izmanto to, kuru definēji procedūrā nevis to kuru definēji programmas sākumā un to kuru definēji procedūrā sauc par lokālo mainīgo. Laikam tā bija...