Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамические массивы
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
status
Задача : Вводится массив. Верно ли, что в нем каждое значение встречается не более 2-х раз.

Как сравнить первое значение в массиве со всеми остальными значениями? или тут можно решить эту задачу другим образом?
klem4
по разному можно ... вот лобовой вариант:


i := 1;
count := 0;

while (i <= n) and (count <= 2) do begin
count := 1;
j := 1;
while (j <= n) and (count <= 2) do begin
if (a[i] = a[j]) and (i <> j) then inc(count);
inc(j);
end;
if count <= 2 then inc(i);
end;

if i > n then writeln('Yes') else writeln('No');
Алена
klem4
  j := 1;
?

Может лучше с i начинать (все, что было раньше - уже проверено)?

Хотя нет... Тогда придется еще проверять, не тестировалось ли это число уже... no1.gif
klem4
Цитата
Может лучше с i начинать (все, что было раньше - уже проверено)?



Пожалуй yes2.gif

Цитата
Хотя нет... Тогда придется еще проверять, не тестировалось ли это число уже...


Всеравно быстрее будет работать, ведь если найден "неподходящий" элемент, внешний цикл сразу прекратится ... Это если бы вопрос стоял "нету ли элементов, которые встречаеются < 2 раз", вот тогда полюбому j := 1;
Алена
Объясняю:
<2, 2, 3, 4, 2, 3, 4, 5>
Откуда надо начинать, чтобы при i указывающем на выделенный элемент не получить count = 1 ?
status
а если использовать визуальную программу и массив вводится через Listbox , это решение тоже можно использовать?
klem4
rolleyes.gif

До этой двойки дело не дойдет smile.gif

Уже для первой двойки count будет равен 3

внутренний цикл прервется, за тем прервется внешний (while (i <= n) and (count <= 2))

а за тем проверка, которая даст отрицательный результат:

if i > n then writeln('Yes') else writeln('No');
Алена
Ну, напечатала лишнюю двойку... Смысл-то тот же:
<2, 3, 4, 2, 3, 4, 5>

Теперь что будешь делать? Для первой двойки Count = 2, все в порядке... А для второй (если делать j := i)?
klem4
Эм что-то я не врубаюсь, ну хорошо

Первай двойка: Count = 2, все ок
Вторая двойка: Count = 1 все ок

в чем проблема я понять не могу просто smile.gif

Алена
<...>
status
ммм...а как мне всё это понять? unsure.gif а то чтото я не понял ничего!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.