18 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 12
|
||||||
1 | ||||||
Определить, является ли последовательность из N произвольных чисел строго возрастающей06.11.2014, 10:23. Показов 13408. Ответов 28
Метки нет (Все метки)
Добрый день!
Столкнулась с проблемой, с которой самостоятельно не могу разобраться. Буду очень сильно признательна за подсказку. Задание, по сути, несложное. Нужно, используя операторы цикла (каждый из трех), определить, является ли последовательность из N произвольных чисел строго возрастающей. С оператором FOR вообще никаких вопросов - там всё понятно, а вот WHILE и REPEAT мне уже весь мозг вывихнули. Суть в том, что у меня не получается построить программу таким образом, чтобы она "считывала" последовательность чисел, введенных через пробел. Последовательность нужно ограничивать, так как данные операторы не могут осуществлять циклы строго определенное количество раз. Пробовала ограничивать символом (n или i) - программа просто выходит через break, и ничего не происходит. Если ограничивать нулем, то последовательность никогда не будет возрастающей, потому что ноль тоже участвует в расчетах. Поэтому попробовала реализовать таким образом, чтобы каждый новый член последовательности нужно было вбивать последовательно.
0
|
06.11.2014, 10:23 | |
Ответы с готовыми решениями:
28
Определить, является ли последовательность чисел строго возрастающей Определить, являеться ли последовательность чисел строго возрастающей Определить, является ли последовательность вводимых чисел возрастающей Является ли последовательность из N произвольных чисел строго возрастающей |
0 / 0 / 2
Регистрация: 04.11.2014
Сообщений: 17
|
||||||
06.11.2014, 11:38 | 2 | |||||
Последовательность сразу забивать надо всю, и хранить в таком типе данных как массив, это первое. Вот пример ввода и вывода последовательности.
0
|
18 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 12
|
||||||
06.11.2014, 11:43 [ТС] | 3 | |||||
Михаил83, спасибо большое за ответ.
Но по условию задачи там массивы не нужно использовать, потому что задача на массивы в другом задании. В этом задании только операторы цикла. Попробовала подойти по-другому, через дельту:
0
|
0 / 0 / 2
Регистрация: 04.11.2014
Сообщений: 17
|
||||||
06.11.2014, 12:31 | 4 | |||||
Попробуй так (ввод массива см выше)
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
|
06.11.2014, 12:35 | 5 |
Михаил83, Вы сами попробовали это откомпилить? Или запилили код неглядя?
Добавлено через 1 минуту К тому же выражения подобные: являются ни чем иным, как работой с массивом - что запрещено условиями.
0
|
18 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 12
|
|
06.11.2014, 12:39 [ТС] | 6 |
Мой последний код по while почти устраивает меня, но если бы можно ограничить последовательность не нулем (он ведь тоже цифра, а по условию задачи последовательность состоит из произвольных чисел, в том числе может включать ноль), а, например, символом. Но у меня пока что не получается. Компилятор ошибки выдает...
0
|
0 / 0 / 2
Регистрация: 04.11.2014
Сообщений: 17
|
|
06.11.2014, 12:49 | 7 |
С while нормально, работает.
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
||||||
06.11.2014, 12:53 | 8 | |||||
Воспользуйтесь типом CHAR
Но надо учесть, что нажиматься будут не только цифры, т.е. моё a:=Ord(.. придется предварить фильтром на вводимое значение.
0
|
18 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 12
|
||||||
06.11.2014, 12:56 [ТС] | 9 | |||||
А к while как прописать? Там у меня все ошибки и выходят...
0
|
0 / 0 / 2
Регистрация: 04.11.2014
Сообщений: 17
|
|
06.11.2014, 12:59 | 10 |
В дельфях работает и в паскале заработает если описание массива включить. По массив изначально ничего написано не было. И когда постил предыдушее сообщение не видел.
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
|
06.11.2014, 13:06 | 11 |
Честно, в алгоритм и его правильность не вникал - я только предложил способ решения конкретной проблемы, а именно - работа с символом.
Т.е. если Вам понятен приведенный мною механизм - можете использовать его где и как угодно. Добавлено через 3 минуты В том виде, в котором Вы это привели - не заработает... да и в Дельфях тоже. У Вас там несколько "очепяток".
0
|
18 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 12
|
||||||||||||||||
06.11.2014, 13:07 [ТС] | 12 | |||||||||||||||
Я пробовала использовать символ '/', но пока особо продвинуться не смогла. То ли в объявлении переменных ошибаюсь:
Наверное, я чего-то не дочитала про символьные переменные...
0
|
0 / 0 / 2
Регистрация: 04.11.2014
Сообщений: 17
|
||||||
06.11.2014, 13:13 | 13 | |||||
Пусть пользователь сначала вводит кол-во элементов в последовательности а затем саму последовательность.
Добавлено через 5 минут Да, есть опечатка. Каюсь, спасибо что заметили. Правил уже на форуме.
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
||||||
06.11.2014, 13:19 | 14 | |||||
- данная строка приведена для определения цифрового значения нажатого цифрового символа, но если Вы нажали '/' - то это уже никак не связано с цифровым значением цифры - именно потому и нужно предварительно отфильтровать нажатия.
Например так:
Судя по приведенному - Вы не очень разобрались со смыслом данной строки. Ord в данном случае возвращает код символа по таблице ASCII, т.е. если мы нажали '1', то Ch содержит символ '1' с кодом 49, '0' - это код 48, т.е. 49-48=1 - вот наше цифровое (а не символьное) значение нажатой клавиши '1'
0
|
18 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 12
|
|
06.11.2014, 13:20 [ТС] | 15 |
Михаил83, это само собой разумеется, если использовать оператор FOR (оператор с параметрами). С операторами цикла while и repeat невозможно заранее задать количество циклов, потому что один из них - оператор с предусловием, а второй - с постусловием. То есть они будут выполнять цикл, пока выполняется (или не выполняется) определенное условие. А по условию задания нужно определить возрастание последовательности всеми ТРЕМЯ операторами.
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
|
06.11.2014, 13:22 | 16 |
Подозреваю, что не сразу всеми ТРЕМЯ, а просто написать 3 программы с разными циклами.
0
|
18 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 12
|
|
06.11.2014, 13:35 [ТС] | 17 |
Почти так, и объединить их в одну, чтобы одним исполнением программы последовательно определять возрастание каждым оператором. То есть объявление переменных будет для всех общим, например.
По сути, объединить - не проблема, надо хотя бы разобраться с каждым отдельно для начала. Вы правы, я не программист, даже не учусь на него, но в учебной программе по моей специальности есть информатика и есть это задание, которое я добросовестно пытаюсь выполнить сама, и разобраться, что к чему. Поэтому очень буду признательна за дополнительные разъяснения.
0
|
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
|
|
06.11.2014, 14:29 | 18 |
И это на самом деле радует!
Я чуть выше дал пояснение как работает встроенная функция ORD - будут вопросы - задавайте.
0
|
Модератор
|
|||||||||||
06.11.2014, 21:37 | 19 | ||||||||||
Gulnara,
Организовать повтор тела цикла фиксированное количество раз (по условию N) любым из операторов цикла несложно, например:
Для цикла с предусловием без составного оператора обычно не обойтись, поскольку нужно увеличивать счетчик внутри тела цикла (но возможны ситуации, когда достаточно увеличения счетчика). Для цикла с постусловием repeat until уже сами по себе являются операторными скобками. Осталось разобраться с телом циклов. Для проверки условия возрастания достаточно проверять, что текущий элемент больше предыдущего. Для следующего шага в качестве предыдущего элемента взять текущий. Хотя, если задание было сделано с for, то и тут проблем не будет. Добавлено через 11 минут То есть, для цикла for у вас получилось что-то вроде
0
|
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 10
|
|
07.11.2014, 14:35 | 20 |
вопрос, какой признак является концом ввода
как только укажите, выложу оба варианта
0
|
07.11.2014, 14:35 | |
07.11.2014, 14:35 | |
Помогаю со студенческими работами здесь
20
Определить, является ли последовательность чисел строго возрастающей Определить, является ли последовательность чисел строго возрастающей или беспорядочной Определить, является ли заданная последовательность целых чисел строго возрастающей Определить является ли последовательность строго возрастающей Определить, является ли последовательность строго возрастающей Проверить, является ли последовательность чисел строго возрастающей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |