S
Staub_37
Здрасте, Господа!
я программирую год и впервые столкнулся с таким алгоритмом с которым, наверняка, сталивались многие. прошу Вашей помощи. Итак..
Пусть есть массив значений типа float, и всем его элементам присвоены значения.
Массив заполнен заранннее, однако не все элементы отвечают требованиям.
Массив должен быть заполнен по возрастанию ПОЛОЖИТЕЛЬНЫМИ элементами.
однако среди элементов массива есть те, значения которых равны 0, отрицательные или меньше предыдущих (болшше следующих).
Понимаю что написал непонятно, но как смог. вот пример:
допустим есть массив, значениями элементов которого является время ( в секундах). и его элементы имеют значения:
(массив заполнен раннее, необходимо произвести "корректировку" значений)
Для еще большей определенности-пусть значения элементов массива кол*цензура*тся в пределе от 0.0000 до 15.9999. Любые значения больше чем максимум (т.е. 15.9999) считать невенрыми
(Но это только для определенности, реально диапазон значений в программе никак не задан-просто "видно на глаз", в соотсетсвии со знанием задачи)
float pTime[5];
pTime[0] = 12.45;
pTime[1] = 0;
pTime[2] = -1;
pTime[3] = 13.45;
pTime[4] = 13322331.455668843;
Надо:
откорректировать значения массива, согласно требованиям:
1) первый элемент массива (с индексом 0) НЕ ОБЯЗАН быть равным 0, но не может быть отрицательным.
2) любой элемент массива должен иметь ТОЛЬКО ПОЛОЖИТЕЛЬНОЕ значение, отличное от 0 (если это только не pTime[0], т.е. начальный элемент массива).
3) каждый элемент массива должен быть больше предыдущего и меньше следующего, т.е.
pTime[i-1]<pTime<pTime[i+1]
P/S: Наверное, легко. как смог сформулировал. но для меня много подводных камней.. хотябы такой вариант:
[0] = 12.33
[1]=15555.2333
[2]=16666.222
[3]=14.33;
здесь правильно элемент [0] и элемент [3], но стандартными маневреами не подойдешь:
[0] < [1] <[2] => [1] элемент имеет верное значение (напоминаю, что на ПРАКТИКЕ в работающей программе ДИАПАЗОН ЗНАЧЕНИЙ НЕ ОГРАНИЧЕН НИКАК, т.е. я только по совокупности значений всех элементов массива могу понять какой диапазон значений приемлем).
[3] < [2], но 2й > [1].
Как тут анализировать? смотреть на несколько (на 2-3) элементов вперед?
подскажите пожалуйста или может ссылки на ресурсы подскажете...
зараннее благодарен!
я программирую год и впервые столкнулся с таким алгоритмом с которым, наверняка, сталивались многие. прошу Вашей помощи. Итак..
Пусть есть массив значений типа float, и всем его элементам присвоены значения.
Массив заполнен заранннее, однако не все элементы отвечают требованиям.
Массив должен быть заполнен по возрастанию ПОЛОЖИТЕЛЬНЫМИ элементами.
однако среди элементов массива есть те, значения которых равны 0, отрицательные или меньше предыдущих (болшше следующих).
Понимаю что написал непонятно, но как смог. вот пример:
допустим есть массив, значениями элементов которого является время ( в секундах). и его элементы имеют значения:
(массив заполнен раннее, необходимо произвести "корректировку" значений)
Для еще большей определенности-пусть значения элементов массива кол*цензура*тся в пределе от 0.0000 до 15.9999. Любые значения больше чем максимум (т.е. 15.9999) считать невенрыми
(Но это только для определенности, реально диапазон значений в программе никак не задан-просто "видно на глаз", в соотсетсвии со знанием задачи)
float pTime[5];
pTime[0] = 12.45;
pTime[1] = 0;
pTime[2] = -1;
pTime[3] = 13.45;
pTime[4] = 13322331.455668843;
Надо:
откорректировать значения массива, согласно требованиям:
1) первый элемент массива (с индексом 0) НЕ ОБЯЗАН быть равным 0, но не может быть отрицательным.
2) любой элемент массива должен иметь ТОЛЬКО ПОЛОЖИТЕЛЬНОЕ значение, отличное от 0 (если это только не pTime[0], т.е. начальный элемент массива).
3) каждый элемент массива должен быть больше предыдущего и меньше следующего, т.е.
pTime[i-1]<pTime<pTime[i+1]
P/S: Наверное, легко. как смог сформулировал. но для меня много подводных камней.. хотябы такой вариант:
[0] = 12.33
[1]=15555.2333
[2]=16666.222
[3]=14.33;
здесь правильно элемент [0] и элемент [3], но стандартными маневреами не подойдешь:
[0] < [1] <[2] => [1] элемент имеет верное значение (напоминаю, что на ПРАКТИКЕ в работающей программе ДИАПАЗОН ЗНАЧЕНИЙ НЕ ОГРАНИЧЕН НИКАК, т.е. я только по совокупности значений всех элементов массива могу понять какой диапазон значений приемлем).
[3] < [2], но 2й > [1].
Как тут анализировать? смотреть на несколько (на 2-3) элементов вперед?
подскажите пожалуйста или может ссылки на ресурсы подскажете...
зараннее благодарен!