Re: Арифметическая прогрессия
От: UgN  
Дата: 29.11.02 10:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В файле записаны неповторяющиеся числа.

А>Необходимо за один проход и без использования массивов определить, можно ли их записать в виде арифметической прогрессии.
А>Например

А>2 10 8 6 4

А>можно представить в виде
А>2 4 6 8 10 — арифметическая прогрессия d=2

А>Числа

А>1 3 5 9 11, нельзя — пропущена 7


Проходишь по файлу и одновременно делаешь слудующее:

1. Запоминаешь наименьшее число Min
if (Value < Min) Min = Value;

2. Запоминаешь наибольшее число Max
if (Value > Max) Max = Value;

3. Запоминаешь наименьшую по модулю разность между двумя соседними числами Diff
if (CurDiff < Diff) Diff = CurDiff;

4. Запоминаешь количество чисел в файле. Cnt
Cnt++

Потом
return  ( ( ( Max - Min ) / Cnt ) == Diff ) ? true : false;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.