logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Pascal] Unikalne liczby w tablicy dwuwymiarowej - jak je wstawić?

fasolens 26 Gru 2004 18:37 4313 4
REKLAMA
  • #1 1088215
    fasolens
    Poziom 11  
    Posty: 33
    Witam, mam spory problem.
    Wiem, ze podobne topic juz byly ale nie bardzo potrafie z nich skozystac przy tablicy dwu-wymiarowej.
    Chodzi mi o wsatwienie liczb do tablicy dwu-wymiarowej, tak aby liczby nie powtarzaly sie w zadnej kolumnie i wierszu.
    Mecze sie z tym problem juz sporo czasu.
    Bardzo prosze o pomoc, a najlepiej o kod zrodlowy.

    Zamykam. - arnoldziq
  • REKLAMA
  • #2 1088482
    Selekcjoner
    Poziom 12  
    Posty: 81
    Pomógł: 1
    Ocena: 3
    Zaraz ci napisze, tylko powiedz czy liczby w każdej komórce muszą byc inne czy wystarczy że poszczególne wieresze beda się skałdały z różnych liczb ( i analogicznie kilumny). Innymi słowy:

    Czy może być tak : 1 2 3|2 3 1|3 1 2
    czy musi być tak : 1 2 3|4 5 6|7 8 9
  • REKLAMA
  • #3 1088641
    fasolens
    Poziom 11  
    Posty: 33
    Znaczy to musi byc tak:
    Jak mam tablice, to liczby nie moga sie powtarzac w danej kolumnie i danym wiersz. A gdzie indziej w tablicy moze wystapic taka sama.
    Zaluzmy dla t[1,i] i:=1..10 w kazdej komurce musi byc rozna liczba,
    dla t[2,i] i:=... musza byc rozne liczby,
    tak samo dla t[j,1] musza byc rozne liczby.
    Ale moze sie powtorzyc w t[1,1] , t[2,2] , t[3,8] itd.

    W oglole mam do napisania taki program:

    Wieżowce: na zadanym kwadratowym obszarze n x n stoi n2 wieżowców (w każdym polu jeden). Liczby przy brzegach kwadratu informują ile wieżowców można zobaczyć patrząc w danym kierunku (część jest zasłonięta). W żadnym rzędzie ani kolumnie nie ma dwóch wieżowców o tej samej wysokości. Znaleźć rozmieszczenie wieżowców.
  • REKLAMA
  • #4 1090050
    Selekcjoner
    Poziom 12  
    Posty: 81
    Pomógł: 1
    Ocena: 3
    Nie wiem czy oto chodzi ale zobacz:

    uses crt;
    type macierz=array[1..16,1..16] of integer;
    var a:integer;
    b:macierz;
    i,j,k,l:byte;
    label 1;
    begin
    clrscr;
    writeln('Podaj wymiar macierzy');
    readln(a);

    for i:=1 to a do for j:=1 to a do
    begin
    1: read(b[i,j]);
    for l:=1 to j-1 do if b[i,l]=b[i,j] then goto 1;
    for k:=1 to i-1 do if b[k,j]=b[i,j] then goto 1;
    end;

    readln;
    end.

    Nie wiem czy możesz stosować goto, nauczyciele tego tego nie lubią, jak nie to poiwedz na jakich pętlach chcesz to zrobić...
    Wstaw do swojego porgramu i napisz czy działa tak jak chcesz. W każdej kolumnie i w każdym wierszu liczby musza być inne, ale generalnie w całej macierzy moga sie powtarzać , tak to rozumiem.

    Pozdro
  • #5 1092264
    fasolens
    Poziom 11  
    Posty: 33
    Dzieki za kodzik...troche go przerobilem zeby sam liczby losowal.
    Przy label'u napisalem:
    Randomize;
    z:=Random(50);
    b[i,j]:=z;


    Mysle ze do jednej etykiety i GoTo nie powinna sie przyczepic pani magister od cwiczen.

    Dzieki jeszcze raz,
    Szczesliwego Nowego Roku
    Peace
REKLAMA