[PASCAL] Problem z tablicą jednowymiarową


(poczatkujacyprogramista) #1

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ę.


(A1788882) #2

Ja tu widzę tablice 20-elementowej.

Ja tu widzę, że do 400.

Kurczę nie wiem dokładnie o co Ci chodzi.

Przecież działa, tak?

Teraz po po prostu daj to w jednej tablicy. Co za trudność?


(Saskatchewan) #3

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.


(Tomek Matz) #4

@Saskatchewan

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.


(Saskatchewan) #5

Poprawione. Z tym dzieleniem przez 6 to specjalnie tak napisałem :wink:, bo też mi się nie wydaje, żeby tam miało być przez 2 i 3.