Mam pewien problem. Otóż mam do szkoły napisać pewien program i nie wiem jak mam to zrobić. Ma on wylosować losowe liczby dla każdego elementu tablicy dwuwymiarowej(1…10 i 1…6). Następnie ma je wypisać a potem wyeliminować powtórzenia danej liczby i znowu całość wypisać. Zacząłem to robić ale coś mi się wydaje, że jest to wszystko źle. Z góry dzięki za szybką pomoc.
program jakis_dziwny;
{ uses crt; <---- jesli tylko po clrscr, to nie polecam.
nie wiem, jak inni, ale ja nie lubie jak prosty program
konsolowy przerzuca mi ekran }
const
n = 10;
p = 6;
r = 49;
type
tkupon = array[1..p] of byte; { skad wiem, ze to kupony duzego lotka oO? }
var
tab : array[1..n] of tkupon;
pom : array[1..r] of boolean;
i, j, k : byte;
procedure wypisz();
var i, j : integer;
begin
for i := 1 to n do
begin
for j := 1 to p do
{ if not (tab[i, j] = 0) then } { nie wypisze zer }
write(tab[i, j]:4); { wlasciwie powinno byc
write(tab[i, j]:round((ln(r) / ln(10) + 0.5)) + 2)}
writeln;
end;
writeln;
end;
begin
randomize; { <----- to wazne, jesli chcesz miec "losowosc" }
j := 0;
for i := 1 to n do
begin
for k := 1 to p do
tab[i, k] := random(r - 1) + 1; { losuje liczbe }
end;
wypisz;
{ teraz będę próbował usunąć każdą liczbę z przedziału od 1 do 49 jeżeli
powtórzy się więcej niż raz - to tutaj coś jest chyba nie tak }
{ mozesz zamiast tego sprobowac przy deklaracji pom:
pom : array[1..r] of boolean := [r of false];
jest w specyfikacji Pascal 3.0.2, ale u mnie nie dziala }
for i := 1 to r do
pom[i] := false;
for i := 1 to n do
for j := 1 to p do
if not pom[tab[i, j]] then
pom[tab[i, j]] := true { zaznacza pierwsze odwiedziny }
else
tab[i, j] := 0; { zeruje komorke, jesli nie byla pierwsza }
wypisz;
{ do usuniecia, ale warto zobaczyc wynik }
j := 0;
writeln(j);
j := 200;
writeln(j);
j := j + 60;
writeln(j); { OMG }
end.
Powyższy program nie usuwa, tylko zeruje komórki z powtórzeniami. Nie wiem, jak sobie wyobrażać usuwanie komórki, może tak jak w stringu przy pomocy delete - czyli zmienić “zerowe” pole z długością, przesunąć komórki z prawej w lewo i udawać, że dalej nic nie ma. Nie potrzeba dużo kodu, żeby napisać własne delete.