Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2009, 02:06   #1
SeregaKo
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 22
Смущение Массив чисел (найти 4 идущих подряд чётных числа)

Здравствуйте!

У меня такой вопрос:
я задаю 1000 случайных чисел, вывожу их в листбох, мне нужно подсчитать сколько раз встречается в этом массиве 4 идущих подряд (не)чётных числа, причём нужно указать кол-во элементов между ними и номер элемента, с которого он начался, например, первый блок чётных чисел встречается с 20 по 24 элемент массива, соответственно в label выводится надпись 1 блок начался с 20 элемента,
второй блок с 45 по 49 элемент массива, соответственно в label2 выводится надпись 2 блок начался с 45 элемента, кол-во элементов между первым блоком и вторым 21 , и так далее...
Для удобства можно создать, ещё один листбох, куда можно переписать элементы 1 листбоха, только заменив, соответствено чётные - 2 , нечётные -1.
Как это организовать всё? Помогите пожалуйста. Заранее спасибо.

Последний раз редактировалось SeregaKo; 18.05.2009 в 02:11.
SeregaKo вне форума Ответить с цитированием
Старый 18.05.2009, 02:43   #2
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

допустим m:array of integer в котором хранятся наши числа.. тогда делаем такой код для нахождения подряд идущих 4-х (не)чётніх чисел
k - это номур элемента с которого будем искать..
Код:
var i, j:integer;
begin
j:=0;
for i:=k to Length(m)-1 do
  begin
    if (m[i] mod 2)=1
     then 
       inc(j)
     else
       j:=0;
    if j = 4 then Break;
  end; 
i:=i-4;//это позицыя с конорой начинается блок
end;
дальше можна начать поиск с позцыи i+4.. и найти следующий блок.. и так до конца массива.. как пощитать растояние между началами блоков думаю расказывать лишнее..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 18.05.2009, 23:09   #3
SeregaKo
Пользователь
 
Регистрация: 17.06.2008
Сообщений: 22
По умолчанию

Чтобы найти полностью все блоки (по 4 числа (не)чётных в каждом), такой код???:
var i, j:integer;
begin
j:=0;
for i:=1 to Length(m)-1 do
begin
if (m[i] mod 2)=1
then
inc(j)
else
j:=0;
if j = 4 then Break;
end;
for i:=i+4 to Length(m)-1 do
if (m[i] mod 2)=1
then
inc(j)
else
j:=0;
if j = 4 then Break;
end;
label1.caption:=IntTostr(j);
end;

Последний раз редактировалось SeregaKo; 18.05.2009 в 23:14.
SeregaKo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл for to do, или как отобразить сумму всех чётных трёхзначных чисел которые делятся на 7 (Delphi 6) Lorden Помощь студентам 9 23.12.2008 18:50
найти подпоследовательность из подряд идущих элементов с наибольшей суммой на С++ aj_tramp Помощь студентам 2 12.12.2008 08:57
Дан двумерный массив случайных чисел. Построить одномерный из исходного, выбрав из него все числа кратные ProWinD Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2008 20:12
Как найти количество чётных чисел диапазоном от 1 до 11? SORIK Microsoft Office Excel 3 02.01.2008 23:37