Pascal -dvojrozmerné pole

Programovacie jazyky, rady, poradňa...
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Pascal -dvojrozmerné pole

Príspevok od používateľa Zlatohlavok »

zdravím , potrebujem do dvojrozmerného pola nahádzať čísla od 1 do 15 a musia sa tam nachádzať práve dva krát.Robil som to tak , že som priradil najskôr na každú pozíciu 0 a potom som priradoval namiesto 0 , i dané z cyklu. Niekde mi chýba nejaká podmenka alebo je zlým spôsobom ukončený repeat , jednoducho mi ešte stále vyhadzuje niekde 0.Poradte :)

Kód: Vybrať všetko

uses crt;
var  i,z,q,w :integer;
     pole:array[1..15,1..15] of integer;
begin
clrscr;
randomize;

 for i:=1 to 15 do
    begin
     for z:=1 to 15 do
      begin
       pole[i,z]:=0;

      end;
    end;


   for i:=1 to 15 do
    begin
     repeat
      q:=random(6)+1;
      w:=random(5)+1;
      if pole[q,w]=0 then pole[q,w]:=i;

     until pole[q,w]=i;
    end;


   for z:=1 to 15 do
    begin
     repeat
      q:=random(6)+1;
      w:=random(5)+1;
      if pole[q,w]=0 then pole[q,w]:=z;

     until pole[q,w]=z;
    end;

{to som si skusal ze ci fakt}
 writeln(pole[1,1]);
  writeln(pole[1,2]);
  writeln(pole[1,3]);
  writeln(pole[1,4]);
  writeln(pole[1,5]);
  writeln(pole[1,6]);
  writeln(pole[2,1]);
  writeln(pole[2,2]);
  writeln(pole[2,3]);
  writeln(pole[2,4]);
readln;

end.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8222
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Pascal -dvojrozmerné pole

Príspevok od používateľa harrison314 »

ked tam ma 2-krat cisla od 1 do 15 , tak pole by malo mat rozmer [1..15,1..2]
Dost lahke riesenie je, ze tam tie cisla das narvrdo a potom pomocou generujes nahodne suradnice v tomto poly a honoty navzajom prehadzujes.
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Re: Pascal -dvojrozmerné pole

Príspevok od používateľa Zlatohlavok »

k tvojej prvej pripomienke , mne v podstate stačí mať vytvorené array[1..5,1..6] pretože precujem s niečím 5x6 , ale je v podstate jedno , čo mám vytvorené.
Tvoj návrh nejdem realizovať , pretože toto je iba časť s môjho programu ktorú som vyňal a tamto by ma len zdržalo.
Takže chcem tamto nejako upraviť :)
Môj daľší problém je taký,že neviem ako vypíšem typový súbor v grafickom mode..

Kód: Vybrať všetko

type lol=record
      meno:string;
      score:integer;
      end;
var
ff:file of lol;
 hrac : lol;
skore,meno1:string;

....
  reset(ff);         //tu som zapisoval nejake udaje//
        if IOResult<>0 then rewrite(ff);
       {$I+}
       hrac.meno:=meno1;
       hrac.score:=h;
       write(ff,hrac);
       close(ff);
.
.
.
//tu ich chcem prečitať na obrazovku//

  reset(ff);
  read(ff,hrac); //neviem čo tu mám použiť na vypisanie , upozornujem som v grafickom mode//
 
 close(ff);
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: Pascal -dvojrozmerné pole

Príspevok od používateľa Gregi »

Mas 15 prechodov FOR a 5x6 prvkov pola. Skus sa zamysliet preco tam mas potom polovicu '0' ;-)
riesenie:

Kód: Vybrať všetko

var
  dalej: Boolean;

for i := 1 to 30 do begin
  dalej := False;
  repeat
    q := random(6) + 1;
    w := random(5) + 1;
    if pole[q,w] = 0 then begin
      if i > 15 then
        pole[q,w] := i - 15
      else
        pole[q,w] := i;
      dalej := True;
    end;
  until dalej;
end;
Napísať odpoveď