Вопрос по задаче №2 из главы 12.2. Переделать цикл while на for
Primary tabs
Вопрос по задаче №2 из главы 12.2
У вас есть программа, использующая цикл while:
var i: integer; begin i:=1; while i<=100 do begin write(i, ' '); i:=i+5; end; readln(); end.Объясните что делает эта программа (что будет выведно на экран и почему)
Перепешите её с помощью цикла repeat/until
Перепешите её с помощью цикла for
Как получить результат через for, которые были получены через циклы repeat-until и while:
1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96
Я заметил что числа заканчиваются на 1 и 6
но никак не могу сообразить как задать условие для for
Думаю задать через if и mod, div
Но как это сделать?
- Log in to post comments
- 32107 reads
vedro-compota
Thu, 03/28/2019 - 12:18
Permalink
добавьте цитату условия,
добавьте цитату условия, вопрос должен быть оформлен понятно.
_____________
матфак вгу и остальная классика =)
vedro-compota
Thu, 03/28/2019 - 13:08
Permalink
код должен быть подсвечен.
код должен быть подсвечен.
_____________
матфак вгу и остальная классика =)
vedro-compota
Thu, 03/28/2019 - 22:41
Permalink
не важно на что заканчиваются
на самом деле не важно чем они заканчиваются - важно как работает цикл:
то что они заканчивают на 1 и 6 есть просто следствие того, что цикл while "шагает" пятерками.
Вам нужно понять как он работает - сам ряд чисел тут не имеет особого значения, но да - ряды должны в конечном итоге совпадать.
_____________
матфак вгу и остальная классика =)
gani84
Fri, 03/29/2019 - 12:50
Permalink
Ответ
Цикл for будет с шагом 1.
vedro-compota
Fri, 03/29/2019 - 14:28
Permalink
какие есть варианты
тут можно решить как минимум двумя способами:
_____________
матфак вгу и остальная классика =)
gani84
Sat, 03/30/2019 - 07:37
Permalink
Ответ
vedro-compota
Fri, 03/29/2019 - 17:15
Permalink
теперь давайте ваш вариант
теперь давайте ваш вариант решения.
_____________
матфак вгу и остальная классика =)
gani84
Mon, 04/01/2019 - 08:20
Permalink
Мое решение
vedro-compota
Tue, 04/02/2019 - 12:12
Permalink
распечатка этой программы
распечатка этой программы совпадает с тем, что выводит исходный код с while?
_____________
матфак вгу и остальная классика =)
gani84
Tue, 04/02/2019 - 12:18
Permalink
Ответ
Да совпадают полностью 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96
Можете проверить!!!
vedro-compota
Tue, 04/02/2019 - 21:20
Permalink
хорошо, переделайте теперь
хорошо, переделайте теперь так, чтобы счетчик цикла (все также через for) не исползовался в процессе формирования очередного числа для вывода.
_____________
матфак вгу и остальная классика =)
gani84
Tue, 04/02/2019 - 21:23
Permalink
чтобы счетчик цикла (все
не совсем понял? Предлагаете в write(i+a ,' ') убрать i
vedro-compota
Tue, 04/02/2019 - 21:46
Permalink
Предлагаете в write(i+a ,' ')
да, i не должна использоваться. Напишите решение.
_____________
матфак вгу и остальная классика =)
gani84
Wed, 04/03/2019 - 11:28
Permalink
Решение
Не хватает 1 в начале не знаю почему?
vedro-compota
Wed, 04/03/2019 - 22:34
Permalink
Не хватает 1 в начале не знаю
потому что первое значение, которое вы выводите это 6. можно сначала выводить, а потом прибавлять.
_____________
матфак вгу и остальная классика =)
gani84
Thu, 04/04/2019 - 09:02
Permalink
Исправил
vedro-compota
Thu, 04/04/2019 - 10:44
Permalink
теперь используем счетчик, проверяем его значение
хорошо, это тоже работающий вариант, он быстр по времени, так как ни один виток не проходит в холостую, но для лучшего понимания давайте сделаем решение, где счетчик в for используется и проходит точно такой же диапазон как в while, тогда:
_____________
матфак вгу и остальная классика =)
gani84
Mon, 04/08/2019 - 13:15
Permalink
Не совсем понял, но решил ее так
vedro-compota
Tue, 04/09/2019 - 00:23
Permalink
не то
неправильно, подразумевается, что i должна изменяться от 1 до 100, как и в исходном коде.
выше же написано что-то вообще невнятно с непонятно зачем добавленным условием.
_____________
матфак вгу и остальная классика =)
gani84
Tue, 04/23/2019 - 10:27
Permalink
Решение
vedro-compota
Tue, 04/23/2019 - 10:49
Permalink
уже лучше
да, теперь лучше часть интераций цикл совершает вхолостую и зря расходует время компьютера, добавьте break, чтобы цикл не работал вхолостую после определенного момента.
_____________
матфак вгу и остальная классика =)
gani84
Tue, 04/23/2019 - 13:52
Permalink
Решение
Если честно не совсем понял что значит в холостую. Можете подробнее описать. Но решил
vedro-compota
Wed, 04/24/2019 - 23:09
Permalink
вспоминаем
как-то с условиями все нездорово, вспомните что существует else.
то есть впустую, зря, когда ничего не происходит полезного.
_____________
матфак вгу и остальная классика =)
gani84
Thu, 04/25/2019 - 06:51
Permalink
Исправил
vedro-compota
Thu, 04/25/2019 - 19:51
Permalink
это верно. Далее нужно ещё
это верно. Далее нужно ещё одно альтернативное решение.
_____________
матфак вгу и остальная классика =)
vedro-compota
Thu, 04/25/2019 - 19:50
Permalink
ну и последнее
Ну и давайте теперь вернёмся к исходной мысли:
математически тут важно другое, если из этого числа вычесть 1, то оно будет делиться на что?
запрограммируйте задачу используя этот факт, пусть счетчик реально пройдет все i:=1 to 100.
_____________
матфак вгу и остальная классика =)
gani84
Sat, 04/27/2019 - 11:30
Permalink
Вопрос
Можете более подробнее пояснить вопрос. Если честно не совсем понял)
vedro-compota
Sat, 04/27/2019 - 14:10
Permalink
пояснение
_____________
матфак вгу и остальная классика =)
gani84
Thu, 05/02/2019 - 16:46
Permalink
Решение
vedro-compota
Thu, 05/02/2019 - 16:57
Permalink
все в кучу
переменная "a" тут не нужна (почему?). Сейчас вы просто слепили в кучу все что смогли. переделайте.
_____________
матфак вгу и остальная классика =)