Другие языки программирования и технологии

Странная задачка по программированию

Задание такое. Удалить в заданном массиве действительных чисел «лишние» (кроме первого) элементы так, чтобы оставшиеся образовывали возрастающую последовательность. Преобразование осуществить за один просмотр массива. Нужно записать это на алгоритмическом языке. Непонятно, как это выполнить в один проход цикла. Насколько я знаю, просто удалять элементы массива нельзя, можно только сдвигать. Но для этого нужен еще один цикл?
Задание ж требует один ПРОХОД про один ЦИКЛ ни слова :)
Жанибек Изимов
Жанибек Изимов
3 382
Лучший ответ
странное дело.. .
в начале вопроса вы говорите "удалить", а позднее пишете "удалять.. . нельзя"...
как понять? что конкретно подаётся в эту программу и что ожидается получить? пример ввода и вывода привести можете?
Ербол Сыздыков
Ербол Сыздыков
53 752
преподаватели любят составлять задания, которые только ини и понимают....
Игорь Москалёв
Игорь Москалёв
13 661
Да не нужен здесь второй массив, и не нужен для сдвига второй цикл.

int array[] = {1, 3, 2, 4, 4, 5};
const int count = sizeof(array) / sizeof(array[0]);

int last_item = array[0];
int new_count = 1;

for (int i = 1; i < count; i++)
{
int item = array[ i ];
if (item > last_item)
{
if (new_count != i)
array[new_count] = item;

last_item = item;
new_count++;
}
}

new_count - новое количество элементов в массиве array[]
пффф.. . задание детское, что тут может быть непонятного? стучи в агент
Юрий Падалкин
Юрий Падалкин
6 247
Можно и за один. Если б не было так поздно, написала б, но спать хочется.

Нужно просто сохранять длину возрастающей последовательности и дописывать следующий элемент на эту позицию. А вот если вам нужно наидлиннейшую подпоследовательность, то тут да -- одним циклом не обойдешься.
Можно использовать второй массив для результата, хотя, конечно, вариант Андрея Рыкова лучше, да и реализуется не сложнее.
так сказано удалить!
смотришь первое число
вводишь переменуую, пусть%, равную первому числу
смотришь второе
если второе больше %, то заносишь его значание в % и переходишь к третьему, иначе удаляешь его
мотришь третье
к конце ОДНОГО прохода будет возрастать весь массив
маловато вопросиков у вас - одын=)

Похожие вопросы