|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.01.2014, 01:08 | #1 |
Пользователь
Регистрация: 14.12.2013
Сообщений: 26
|
массив цикл-пока или цикл-до в PascalABC
Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента.
|
16.01.2014, 09:01 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
покажите, как Вы описываете и заполняете массив?
а, насколько я понимаю условия задачи, задачка очень проста. возникает только вопрос неоднозначности формулировки "первого" недопустимого элемента. Что есть "первый" недопустимый элемент в понимании автора задачи, сие только ему и ведомо! например, пусть N = 4 есть массив {3, 4, 1, 4 } Какой номер у первого недопустимого элемента? а в массиве {4, 3, 7, 2} какой номер первого недопустимого элемента? Поэтому, либо, если возможно, уточняйте у преподавателя, либо, интерпретируйте это так, как Вам понятнее и проще. например, могу предложить такой вариант. вводим ДОПОЛНИТЕЛЬНЫЙ массив такой же размерности. заполняем его числами от 1 до N далее в цикле идём по исходному массиву A. Каждое число A[i] проверяем, что оно входит в диапазон [1..N] - если нет, то: стоп-машина - нашли первый недопустимый элемент. Если число в нужном диапазоне, то проверяем наличие данного числа в доп массиве (по его номеру. Если в доп массиве на позиции, равной проверяемому числу стоит это число, то всё хорошо. Заменяем число в доп.массиве на нолик (признак, что число отработано). Если же на позиции в доп.массиве УЖЕ ноль (это признак, что данное число встречалось в проверяемом массиве ранее) - то: стоп-машина - нашли первый недопустимый элемент. как-то так... |
16.01.2014, 21:10 | #3 | |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Цитата:
Код:
|
|
16.01.2014, 22:08 | #4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Заметьте, не число, которого нет, а Цитата:
|
||
16.01.2014, 22:13 | #5 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Ладно.. Тогда я за множество..
|
16.01.2014, 22:26 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
16.01.2014, 22:36 | #7 | ||
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Вариант без доп памяти.. Сортировка! (Пусть кусок.. N*logN.. и потом еще пробежка по массиву..) Можно еще цикл в цикле.. но там будет хуже..
Цитата:
Цитата:
|
||
16.01.2014, 22:52 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Poma][a, при сортировке нужно будет еще запоминать исходную позицию числа в массиве.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
16.01.2014, 22:57 | #9 | ||
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Цитата:
Цитата:
И тут уже выводим или 2 или 4 или что-то еще.. UPDATE Прозрел.. Мы должны выводить №элемента.. надо все же читать условия.. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
цикл или массив | wasabi | Фриланс | 11 | 27.01.2010 21:23 |
Задачка на цикл 'пока'... | Андрю)(@ | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 15.01.2009 17:07 |
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) | Mr.User | Помощь студентам | 9 | 23.11.2007 01:34 |