Napisz program, w którym dana jest tablica o wymiarach (10 x 10), po uruchomieniu programu ma zostać wygenerowane pozycje statków:
10 jednomasztowców (w dalszej części ale to nie jest teraz wymagane musze mieć możliwość celowania w nie);
ofc każdy wie jak wygląda plansza do statków i wie jakie zasady panują, ale przypomnie, że żaden statek nie może się ze sobą stykać żadną częścią, tzn nawet po ukosie, czyli stawiając 1 jednomasztowiec mamy 9 pól które już nie mogą być wykorzystane
uses crt;
const
N = 10;
var
i, j: 1..N;
begin
clrscr;
gotoxy(15,1);
writeln('Plansza do statkow');
writeln;
for i := 1 to N do
begin
for j := 1 to N do
begin
write('0');
end;
writeln;
end;
readln;
end.
to co wymyśliłem (na podst innego prog) to narazie czysta plansza wywołana prostymi pętelkami, właśnie tak ma wyglądać plansza, statyki mają być oznaczone ‘1’ a puste pola ‘0’
a jeżeli nie słyszałem ( nie miałem tego jeszcze) o tablicy Boolean?
duplikowanie tablicy miałem tylko w taki sposob, tzn bez lini brzegowych
co do zwykłego zduplikowania tablicy nie widze problemu ale czy tym sposobem tzn bez tej tablicy Boolean da sie zrobic
uses crt;
type
tab2=array[1..20,1..20] of byte;
procedure info(var n,m:byte);
begin
clrscr;
writeln('Program generuje i wyswietla tabilce dwuwymiarowa.');
write('Podaj ilosc kolumn: ');readln(n);
write('Podaj ilosc wierszy: ');readln(m);
writeln;
end;
procedure generuj(var tab2x2:tab2; n,m:byte);
var
i,j:byte;
begin
randomize;
for j:=1 to n do
begin
for i:=1 to m do
begin
tab2x2[i,j]:=random(10);
end;
end;
end;
procedure drukuj(tab2x2:tab2; n,m:byte);
var
i,j:byte;
begin
for j:=1 to m do
begin
for i:=1 to n do
begin
write(tab2x2[i,j],' ');
end;
writeln;
end;
end;
procedure nowa(var bis:tab2; tab2x2:tab2; n,m:byte);
var
i,j:byte;
begin
for j:=1 to n do
begin
for i:=1 to m do
begin
bis[i,j]:=tab2x2[i,j];
end;
end;
for j:=2 to m-1 do
begin
for i:=2 to n-1 do
begin
bis[i,j]:=(tab2x2[i-1,j]+tab2x2[i,j-1]+tab2x2[i,j+1]) div 4;
end;
end;
end;
var
tab2x2,bis:tab2;
n,m:byte;
begin
info(n,m);
generuj(tab2x2,n,m);
drukuj(tab2x2,n,m);
nowa(bis,tab2x2,n,m);
writeln;
drukuj(bis,n,m);
readln;
end.
trochę stary temat ale co tam nie będę otwierać nowego. mam pytanko jak zadeklarować taki jednomasztowiec? jako typ czy jako co? (i jak ewentualny 2 masztowiec?)
no okej to rozkminie, a jak rozpykać to żeby losowo (gdziekolwiek w tablicy spęłniając warunki w.w) były generowane te jednomasztowce tzn bez udziału usera. Czy da się to funkcją randomize zrobić? nakieruj mnie jakoś