Kezdőoldal » Számítástechnika » Programozás » Amikor ezt le akarom futtatni...

Domi25 kérdése:

Amikor ezt le akarom futtatni akkor a mindig jelez hogyan lehetne ezt kijavitani?

Figyelt kérdés
program lokalis_minimum;, const n=5;, var a :array[1..5, 1..5] of integer;, b :array[1..25] of integer;, k:integer;, randomize;, for i:=1 to 5 do, for j:=1 to 5 do a[i
2017. júl. 5. 12:52
1 2
 1/11 A kérdező kommentje:

program lokalis_minimum;

const n=5;

var a :array[1..5, 1..5] of integer;

b :array[1..25] of integer;

i,j,k:integer;

begin

{ tomb kigenerealasa }

randomize;

for i:=1 to 5 do

for j:=1 to 5 do a[i,j]:=random(50)+1;

{ tomb kiirasa }

for i:=1 to 5 do write(a[i,j]:3);

writeln;

end

{ lokalis minimum keresese }

k:=0

for i:=1 to 5 do

for j:=1 to 5 do

begin

if (a[i,j]<a[i-1,j-1])

and (a[i,j]<a[i-1,j])

and (a[i,j]<a[i-1,j+1])

and (a[i,j]<a[i,j-1])

and (a[i,j]<a[i,j+1])

and (a[i,j]<a[i+1,j-1])

and (a[i,j]<a[i+1,j])

and (a[i,j]<a[i+1,j+1])

then

begin

k:=k+1;

b[k]:=a[i,j];

end;

begin

k:=0;

for i:=2 to n-1 do

if (a[1,i]<=a[1,i-1])

and (a[1,i]<=a[1,i+1])

and (a[1,i]<=a[2,i-1])

and (a[1,i]<=a[2,i])

and (a[1,i]<=a[2,i+1])

then inc(k);

writeln('k=',k);

end;


end;

{ a lokalis minimum kiiratasa }

writeln('Lokalis minimum ertekek a tombben: ');

for i:=1 to k do

write(b[i],' ');

readln;

end;

end.

2017. júl. 5. 12:54
 2/11 A kérdező kommentje:
lényeg... lokális minimumot kell meghatározni a szomszédoknál a 2dimenziós tömbben
2017. júl. 5. 12:54
 3/11 anonim ***** válasza:

Van még a világon pascal nyelv? :o


"mindig jelez hogyan lehetne ezt kijavitani?" - mondjuk ha leírtad volna, hogy mit, azzal lehetségessé vált volna a kérdés megválaszolása.


Kis trükk:

ha minden begin után bentebb kezdesz egy karakterrel és minden end után kintebb, sokkal áttekinthetőbb lesz a forrás.


"{ tomb kiirasa }" - ez meg marhára nem írja ki a tömböt... vagy igen? Vissza az 1. ponthoz: output alapján debuggolni sokkal célirányosabb, f___om áll neki száraztesztelni elölről...

2017. júl. 5. 13:20
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
...amúgy megvan, hogy a "{ lokalis minimum keresese }" előtti end a program vége? Ezért kellenek azok a behúzások...
2017. júl. 5. 13:23
Hasznos számodra ez a válasz?
 5/11 anonim válasza:
Azt vagod, h a gyk-n nem lehet behuzasokat csinalni?
2017. júl. 5. 13:46
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:

#5: mért ne lehetne?

Pl:

begin

    k:=k+1;

    b[k]:=a[i,j];

end;


és túl nagy trükk sem kell hozzá, csak escapelni kell a szóközöket. &nbsp;-vel

2017. júl. 5. 14:59
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:

előző leírnád idézőjelek közé hogy mit is írjak a szóköz karakter elé?

Egyébként így:

  kkk

  kkk

2017. júl. 5. 23:36
Hasznos számodra ez a válasz?
 8/11 tabaki ***** válasza:

Nem mélyedtem el a programodban, de első blikkre főleg a begin..end blokkjaidat nem értem.

Már indulásnál néhány sor után lezárod a programot, igaz, nem szabályosan, hanem nagyvonalúan elmellőzöd, hogy bármivel jelezd az utasítás végét -- de mégiscsak ENDdel:


begin

{ tomb kigenerealasa }

      randomize;

      for i:=1 to 5 do

            for j:=1 to 5 do a[i,j]:=random(50)+1;

{ tomb kiirasa }

      for i:=1 to 5 do write(a[i,j]:3);

      writeln;

end


Ha írnál utána egy pontot, kész, a fordító számára vége a programnak, a többi komment. Így viszont mire való?

A keresést megint csak egy lezáratlan sorral indítod:


k:=0


Az alábbi blokk meg hol van tulajdonképpen?


begin

      k:=0;

      for i:=2 to n-1 do

            if (a[1,i]<=a[1,i-1])

            and (a[1,i]<=a[1,i+1])

            and (a[1,i]<=a[2,i-1])

            and (a[1,i]<=a[2,i])

            and (a[1,i]<=a[2,i+1])

            then inc(k);

      writeln('k=',k);

end;


Mert most az i-cikluson belül erőlködik, hogy megváltoztassa a ciklusváltozót, de a fordítónak ez sem tetszik.

Ezenkívül csak az utolsó ReadLn; utáni end; szerepe talányos, máskülönben remekül agyonzsúfolt kód, nehogy a rossz emberek gusztust kapjanak a crackelésére.

2017. júl. 6. 00:48
Hasznos számodra ez a válasz?
 9/11 tabaki ***** válasza:

Hm... A tömböd mindkét irányban 1..5-ig tart, és ezeken a határokon belül töltöd fel. Ehhez képest a lokális minimum keresésekor indexeled 0-val és 6-tal is -- ott kívül miféle értékeket remélsz, amelyekkel hitelesen össze tudod hasonlítani a tömb tartalmát?

Csuda hasznosan alkalmazod az n konstanst. Egy eset kivételével sehol sem használod, ott egyébként semmivel sem indokoltabb, mint a többi helyen volna.

2017. júl. 6. 08:53
Hasznos számodra ez a válasz?
 10/11 tabaki ***** válasza:

Hát... úgy tűnik, ez a projekt lezárult.

[link]

2017. júl. 9. 00:26
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!