Witam. Mam takie zadanie. Napisz program, który w tablicy 100-elementowej znajdzie i wyświetli wszystkie wartości podzielne przez 2 i 3 oraz poda liczbę tych elementów. Wartości tablicy są przydzielone z zakresu <1,100>.
Zdołałem napisać coś takiego ale nie wiem czy dobrze.
uses crt;
var
ta:array[1..20] of integer;
tab:array[1..20] of integer;
a,b,i,j,s:integer;
begin
randomize;
for i:=1 to 20 do
ta[i]:=random(401);
for j:=1 to 20 do
tab[j]:=random(401);
for i:=1 to 20 do
if (ta[i] mod 3=0) and (ta[i] mod 2=0) then
begin
write(ta[i],' ');
a:=a+1;
end;
for j:=1 to 20 do
if (tab[j] mod 3=0)and (tab[i] mod 2=0) then
begin
write(tab[j],' ');
a:=a+1;
end;
writeln;
writeln('liczba = ',a);
readln;
end
Robiłem to na dwóch tablicach bo było mi łatwiej, a teraz nie wiem jak dać wszystko na tą jedną właściwą tablicę.
Na pewno sam to pisałeś? Pomijając to co pisał kolega powyżej, to po co Ci w ogóle dwie tablice :o?
W Pascalu nic nie pisałem już ładnych parę lat, ale to coś może działać:
uses crt;
var
tab:array[1..100] of integer;
ile,i:integer;
begin
ile:=0;
randomize;
for i:=1 to 100 do
tab[i]:=random(100)+1;
for i:=1 to 100 do
if (tab[i] mod 6=0) then
begin
write(tab[i],' ');
ile:=ile+1;
end;
writeln;
writeln('liczba = ',ile);
readln;
end.
Liczba ma być podzielna przez 2 i przez 3 (czyli podzielna przez 6), czy przez 2 lub przez 3? Właściwie, to pętla for też mogłaby być jedna, ale przy dwóch wyraźniej widać co się dzieje.
Zamiast tab masz ta, brakuje jednego średnika i powinno być tab_:= random(100) + 1;_
Poza tym jest OK. Pod warunkiem, że warunek z dzieleniem przez 6 jest poprawny, ale sam mam wątpliwości czy chodzi o liczby podzielne jednocześnie przez 2 i 3, czy też o liczby, które są podzielne przez 2 lub 3.