• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Występowanie elementu w tablicy

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
–1 głos
186 wizyt
pytanie zadane 2 stycznia 2017 w Inne języki przez kmarcin Użytkownik (590 p.)
Witam,

W programie podajemy ilość liczb które chcemy wpisać, następnie je wpisujemy, po czym na wyjściu mamy uzyskać odpowiedź TAK lub NIE w zależności od tego, czy wśród zestawu liczb którakolwiek liczba pojawiła się co najmniej 3 razy.

Udało mi się napisać coś takiego, tylko nie działa to do końca dobrze, ponieważ dostaje 5 komunikatów tak lub nie, gdyż każda liczba jest sprawdzana osobno.

 

program trzyelementy;

var
tab: array[0..1000] of LongInt;
i, j, ileliczb: integer;
licznik: array[0..1000] of LongInt;

begin
readln(ileliczb);

for i:=1 to ileliczb do
     begin
     read(tab[i]);
 end;

for i:=1 to ileliczb do
begin
     for j:=1 to ileliczb do
     begin
     if(tab[i]=tab[j]) then
     licznik[i]:=licznik[i]+1;
     end;
     if(licznik[i]>=3) then writeln('TAK')
     else
     writeln('NIE');

end;

readln();
end.

1 odpowiedź

+1 głos
odpowiedź 3 stycznia 2017 przez Mya Bywalec (2,790 p.)

Tworzenie olbrzymiej tablicy do zliczania wystąpień nie za bardzo ma sens w tym przypadku. Wystarczy pojedyncza zmienna.

Żeby informacja tak/nie występowała tylko raz trzeba przenieść ją poza pętlę.

Program mógłby wyglądać tak (chociaż to wciąż nie jest najbardziej optymalna wersja):

program trzyelementy;

var
tab: array[0..1000] of LongInt;
i, j, ileliczb: integer;
licznik :integer;
trzyrazy :boolean;

begin
readln(ileliczb);

for i:=1 to ileliczb do
begin
  read(tab[i]);
end;
trzyrazy := false;
for i:=1 to ileliczb do
begin
  licznik := 0;
  for j:=1 to ileliczb do
  begin
    if(tab[i]=tab[j]) then
      licznik := licznik + 1;
  end;
  if licznik >= 3 then
    trzyrazy := true;
end;
if trzyrazy then
  writeln('TAK')
else
  writeln('NIE');
readln();
end.  

Należałoby też dodać komunikaty dla użytkownika przy wprowadzaniu liczb.

komentarz 5 stycznia 2017 przez kmarcin Użytkownik (590 p.)
Dziękuję bardzo za pomoc :)

Podobne pytania

0 głosów
0 odpowiedzi 312 wizyt
pytanie zadane 11 kwietnia 2022 w Inne języki przez julka1605 Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 581 wizyt
pytanie zadane 22 września 2021 w Inne języki przez Nikon221 Początkujący (340 p.)
0 głosów
1 odpowiedź 1,583 wizyt
pytanie zadane 23 marca 2021 w Inne języki przez Martita Bywalec (2,520 p.)

93,439 zapytań

142,431 odpowiedzi

322,674 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...