|
Задачка по 1С | ☑ | ||
---|---|---|---|---|
0
Cray12
05.03.14
✎
11:55
|
Всем доброго дня.
Попалась нам в отделе задачка по 1С: Количество = 5; Пока Сч = 1 По Количество Цикл Количество = ?(Сч>=3,Количество+1,Количество-1); КонецЦикла Сообщить(Количество); Нужно без помощи 1С сказать, чему в конечном итоге будет равно количество. Мы подумали, что цикл пойдет бесконечно, решили узнать у самой 1С-ки, она сообщила, что цикл закончится после 6. То есть, при Сч=3 и Кол-ве=3, а так же при обоих значениях, равных 4 и 5, цикл пойдет. Но как только в цикле количество увеличивается до 6, а после прохождения и счетчик - в цикл система не зашла. Вопрос: почему? |
|||
1
shuhard
05.03.14
✎
11:56
|
(0) ржака
целый отдел не умеет читать ЖКК и пользоваться отладчиком |
|||
2
1Сергей
05.03.14
✎
11:57
|
цикл будет бесконечным. Не?
|
|||
3
Cray12
05.03.14
✎
11:59
|
(2) Я тоже так думал. Поэтому и смотрели через отладчик. При 3, 4 и 5 в цикл заходит, при 6 - нет. Потому и полез на форум.
|
|||
4
ссылка
05.03.14
✎
12:00
|
Пока <> Для
|
|||
5
Wobland
05.03.14
✎
12:00
|
двоешники. условие в такой поке вычисляется один раз
|
|||
6
Irbis
05.03.14
✎
12:01
|
Это в школе объясняют, классе так примерно в восьмом, когда ещё я учился.
|
|||
7
1Сергей
05.03.14
✎
12:01
|
(5) если б было "Пока", но там "Для" на самом деле
|
|||
8
Cray12
05.03.14
✎
12:01
|
(5) Ой ё, я же не исправил, извините. Пока заменили на Для, иначе 1С вообще ошибку выдаст.
|
|||
9
1Сергей
05.03.14
✎
12:01
|
(5) и, кстати, нет. В "Пока" условие будет каждый раз вычисляться заново
|
|||
10
Wobland
05.03.14
✎
12:02
|
ё-маё.. опять кто-то придумал то, что нормальному человеку в голову не придут
|
|||
11
1Сергей
05.03.14
✎
12:02
|
Кароче, ответ 6
|
|||
12
Cray12
05.03.14
✎
12:03
|
(11) Да, это понятно. Вопрос в том, почему цикл дальше не идет.
|
|||
13
Любопытная
05.03.14
✎
12:03
|
(12)потому что 6=6 разве нет?
|
|||
14
1Сергей
05.03.14
✎
12:03
|
(12) а с куяли он должен дальше идти, если Сч=6 и Количество=6?
|
|||
15
Cray12
05.03.14
✎
12:04
|
(13) Я же говорю, при обоих значениях = 3, 4 и 5 все норм, идет дальше. Как только 6 - все, останавливается.
|
|||
16
1Сергей
05.03.14
✎
12:04
|
(15)
Сч - Количество 1 - 4 2 - 3 3 - 4 4 - 5 5 - 6 6 |
|||
17
Cray12
05.03.14
✎
12:05
|
(16) При сч = 1 кол-во будет 5, а не 4.
|
|||
18
Cray12
05.03.14
✎
12:06
|
(16) При сч=1 кол-во будет 5, а не 6
|
|||
19
1Сергей
05.03.14
✎
12:06
|
(17) я показываю результаты в конце цикла
|
|||
20
1Сергей
05.03.14
✎
12:06
|
(19) + непосредственно перед проверкой
|
|||
21
Любопытная
05.03.14
✎
12:07
|
(17) При Сч=5 количество станет равным 6, дальше идем в начало цикла: Сч=6, количество = 6, все, до свидания.
|
|||
22
Cray12
05.03.14
✎
12:07
|
(20) Ну, опять-таки, при 3-4, 4-5 дальше идет, почему потом останавливается?
|
|||
23
Cray12
05.03.14
✎
12:08
|
(21) Так же уже было? При сч=4 кол-во тоже будет 4 и при 5 то же самое.
|
|||
24
1Сергей
05.03.14
✎
12:11
|
(22) тогда прав Wobland
Читай СП. конец цикла высчитывается в самом начале один раз |
|||
25
Ненавижу 1С
гуру
05.03.14
✎
12:11
|
в конструкции
Для Сч = 1 По Количество Цикл обе границы вычисляются один раз перед выполнением цикла, учите матчасть |
|||
26
Cray12
05.03.14
✎
12:11
|
(24) Тогда почему при шестерке он полез? Если высчитывается в начале, прошел бы до 5 и успокоился.
|
|||
27
1Сергей
05.03.14
✎
12:12
|
(26) Какой шестерке? Сч не был равен 6
|
|||
28
Cray12
05.03.14
✎
12:12
|
(27) Был, в конце. Через отладчик смотрели, были оба значения = 6.
|
|||
29
Серго62
05.03.14
✎
12:13
|
(28) Он в цикл при 6 не заходит.
|
|||
30
hhhh
05.03.14
✎
12:14
|
(28) ну и что? Главное Для его не пропустило. Потому что больше 5.
|
|||
31
1Сергей
05.03.14
✎
12:14
|
(28) именно, когда стал 6 - вышли из цикла, не выполняя тела
|
|||
32
Серго62
05.03.14
✎
12:14
|
+(29) Посмотри еще раз внимательно отладчиком, каждую итерацию
|
|||
33
hhhh
05.03.14
✎
12:14
|
(29) цикл до 5, поэтому и не заходит в 6.
|
|||
34
Ненавижу 1С
гуру
05.03.14
✎
12:15
|
короче ответ в конце будет 2*Количество-4
|
|||
35
Серго62
05.03.14
✎
12:17
|
Это случайно не из тестов для ЕГЭ по информатике? Там любят подобную хрень спрашивать...
|
|||
36
Cray12
05.03.14
✎
12:19
|
Так, короче, дело в элементарном незнании. Пределы цикла и правда не меняются в процессе его прохождения. То, что интриговало в начале, оказалось банальным результатом неведения. Всем спасибо за ответы и пояснения!
|
|||
37
Ненавижу 1С
гуру
05.03.14
✎
12:21
|
а так?
int c = 5; for(int i=1; i<=5; i++) { c>=3 ? i++ : i--; } |
|||
38
Godofsin
05.03.14
✎
12:23
|
Скучно...
|
|||
39
1Сергей
05.03.14
✎
12:25
|
(37) Встроенный язык: Строка 1: {(1,5)}: Неопознанный оператор
|
|||
40
МойКодУныл
05.03.14
✎
12:26
|
(38) надо написать свой 1С, интересный. Где подобный цикл будет кончаться на 11, причем просто так.
|
|||
41
Fedor-1971
05.03.14
✎
12:26
|
(37) for(int i=1; i<=C; i++) ошибся, там в условии стоит Количество
|
|||
42
Godofsin
05.03.14
✎
12:27
|
(40) Неее, должно хитрое, не сразу понятное логичное объяснение, почему цикл кончается на 11.
|
|||
43
МойКодУныл
05.03.14
✎
12:28
|
(42) Потому что 2*5 + 1 = 11. С 1 начинается счетчик, а на 2 умножаем потому что цикл!
|
|||
44
Godofsin
05.03.14
✎
12:29
|
(43) Гениально!!!
|
|||
45
DS
05.03.14
✎
12:32
|
Сообщение (5), как я смотрю, не у всех отображается...
|
|||
46
Aleksey
05.03.14
✎
12:41
|
(45) ну тут никто не ищет решения. Все хотят пообщаться
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |