gifts2017

Простые, но интересные задачки по программированию

Опубликовал Евгений Люлюк (Evg-Lylyk) в раздел Программирование - Практика программирования

Простенькие задачки по программированию на сообразительность.
Зарядка для ума.

Прислал работодатель в качестве тестового задания. Некоторые уж совсем простые. Ответы опубликую позже в файле.

В комментариях наверняка будут ответы, так что кому интересно решить самостоятельно не проматывайте вниз.

Задача 1.

Объявлены две числовые переменные a и b. Необходимо сделать так, чтобы без объявления других переменных в результате работы алгоритма значения переменных поменялись местами. Например, если изначально a = 4, b = 5, то в результате алгоритма стало a = 5, b = 4. Применять можно только операции присваивания и арифметические операции с числами и значениями переменных.

 

Задача 2.

За один цикл вычислить значение функции F(n) = 1!*2!*3!...*n!., где n! = 1*2*3*…*n.

 

Задача 3.

Убрать условный оператор «Если» из следующего блока (А может принимать значение 0 или 1):

Если (А = 0) Тогда
   
B = 2;
Иначе
   
В = 1;
КонецЕсли;

Не допускается использование ЛЮБЫХ других условных операторов (например, ?(А = 0;2;1))

 

Задача 4.

Имеются два массива данных А[а] и B[в] (а и в – количества элементов массива). Известно, что оба массива упорядочены по возрастанию. Необходимо написать алгоритм, проходящий по этим массивам за 1 цикл вида:

Для Сч = 1 По а + в Цикл

и выдающий значения обоих массивов в порядке возрастания т.е. как бы объединив оба массива и отсортировав их по возрастанию.

 

Задача 5.

Имеется неупорядоченный массив из n различных целых чисел от 0 до n (0,1,…,j-1,j+1,….,n). Необходимо за один цикл определить недостающее число j.

 

Ссылки по теме:

http://macedu.narod.ru/edu/summary/prog-exe.html

 

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Алексей Роза (DoctorRoza) 10.05.10 17:23
Хорошие задачи .. )) .. а первая вообще из 10 класса средней школы!! :)
2. Ярослав Волохов (YVolohov) 10.05.10 18:54
Задачи понравились, +

Кстати для первой:
А = А + В;
В = А - В;
А = А - В;
Трям; minikos; Evg-Lylyk; +3 Ответить 2
3. Ярослав Волохов (YVolohov) 10.05.10 19:02
Для третьей задачи всего одна строка:

B = 2 - A;
timeforlive; freeek; Светлый ум; JaneP; odin777; Evg-Lylyk; +6 1 Ответить 3
4. Ярослав Волохов (YVolohov) 10.05.10 19:36
Задача №5

КоличествоЭлементов = Массив.Количество();
СуммаЧиселМассива = 0;
СуммаЧиселРяда = 0;

Для Счетчик = 1 По КоличествоЭлементов Цикл
СуммаЧиселМассива = СуммаЧиселМассива + Массив[Счетчик - 1];
СуммаЧиселРяда = СуммаЧиселРяда + Счетчик;
КонецЦикла;

Сообщить(СуммаЧиселРяда - СуммаЧиселМассива);
5. Влад Косилов (kosilov) 10.05.10 19:54
ТекA=0;
ТекB=0;
КвоА = A.Количество();
КвоВ = B.Количество();
Для Сч = 1 По КвоА + КвоВ Цикл
    если ТекA<КвоА и (ТекB=КвоВ  ИЛИ A[ТекA]<B[ТекB]) тогда
        Сообщить("A[" + ТекA + "]=" + A[ТекA]);
        ТекA = ТекA + 1;
    иначе
        Сообщить("B[" + ТекB + "]=" + B[ТекB]);
        ТекB = ТекB + 1;
    КонецЕсли;
КонецЦикла;

...Показать Скрыть
el7; Evg-Lylyk; +2 Ответить 1
6. Евгений Люлюк (Evg-Lylyk) 10.05.10 20:48
(4) Можно чуток попроще. Сумма чисел арифметической прогрессии равна (Начало+Конец) * (Количество / 2). Пример: 1-100; Сумма = (1+101) *(100/2) = 5050 т.к. пропущенное число только одно разница между суммой массива и полной прогрессией и будет то число.
YVolohov; +1 Ответить
7. Сергей Ожерельев (Поручик) 10.05.10 22:59
>>> Прислал работодатель в качестве тестового задания.
Надо было послать этого работодателя. На три буквы, например в лес.
KapasMordorov; +1 Ответить
8. Валерий Агеев (awa) 11.05.10 09:16
Ну и для второй задачки ответ:
Функция F(N)
	Результат = 1;
	Для Ин = 2 По N Цикл
		Результат = Результат * Pow(Ин, N - Ин + 1);
	КонецЦикла;
	Возврат Результат;
КонецФункции // F(N)
...Показать Скрыть
9. Евгений Люлюк (Evg-Lylyk) 11.05.10 11:55
(8) неверно
При N=4 правильно (1! = 1) * (2! =2) * (3! = 6) *(4! = 24) = 144
У вас результат 1*(2^3 = 8)*(3^2=9)*(4^1) = 288
10. Валерий Агеев (awa) 11.05.10 12:02
(9) 1*2*6*24=288 (с) calc
Или у нас калькуляторы разные? (в уме я считать не умею!)
11. Евгений Люлюк (Evg-Lylyk) 11.05.10 12:10
(10) Сорри моя ошибка все верно
12. Анна Кузнецова (Nefertary) 11.05.10 12:36
13. marat_n q (marat_n) 11.05.10 12:56
Я даже догадываюсь, что за работодатель :)
Нормальный тест. Сразу отфильтровывают тех, кто подумать не может. Только присылать его как-то бессмысленно, ибо есть гугл и время не ограничено.
14. Андрей Янакаев (YAN) 11.05.10 13:22
Хорошая зарядка для ума, вот обработку даже захотелось сделать :)
Прикрепленные файлы:
ВО_задачки.epf
Светлый ум; Evg-Lylyk; +2 Ответить
15. Евгений Люлюк (Evg-Lylyk) 11.05.10 13:43
(13)
Я даже догадываюсь, что за работодатель

напиши пожалуйста в личку
Свою задачу эти задачки решают. Я допустим взял на заметку.
(12) Для A=0 B= 2
А у вас 2^0=1
16. Дмитрий К (ll13) 11.05.10 15:04
1). A=A+B; B=A-B; A=A-B
2). Расчет факториала выносим в рекурсивную функцию(по условию задачи использование рекурсии не запрещено), а сами n! перемножаем в цикле.
3). B = 2 - A
Evg-Lylyk; +1 Ответить
17. Эстер Коган (e.kogan) 11.05.10 15:38
(3) А вот и нет. B = 1+(A=0);
Kesak; i_a; KeyMaster; Evg-Lylyk; +4 Ответить 2
18. Ярослав Волохов (YVolohov) 11.05.10 19:25
Согласно условию задачи:
если А = 0 тогда В = 2
если А = 1 тогда В = 1

если же считать по формуле в (17)
если А = 0 тогда В = 1
если А = 1 тогда В = 2
19. Евгений Люлюк (Evg-Lylyk) 11.05.10 23:15
(18) да не все правильно. В 1С Число(Истина) = 1; Число(Ложь) = 0 вот и результат
20. Ярослав Волохов (YVolohov) 11.05.10 23:54
(19) Действительно правильно. А я сначала не врубился.
21. Сергей (ildarovich) 12.05.10 00:00
Задача 4
ё = 0;
Для Сч  = 1 По А.Количество() + В.Количество() Цикл
	ж = (Сч - 1 - ё) = В.Количество() ИЛИ ё < А.Количество() И А[ё] < В[Сч - 1 - ё];
	Сообщить(?(ж, "А[" + ё + "]=" + А[ё], "В[" + (Сч - 1 - ё) + "]=" + В[Сч - 1 - ё]));
	ё = ё + ж
КонецЦикла
...Показать Скрыть
22. Дмитрий К (ll13) 12.05.10 00:22
(19),(20) Только вот зачем? Смотрите сами, зачем городить огород:
1 - операция сравнения
2 - неявное приведение типа (Булево->Число)
3 - Сложение

Ведь В зависит от А линейно => B = 2 - A более логично ... :)
23. Евгений Люлюк (Evg-Lylyk) 12.05.10 01:47
(22) Да согласен сложнее. Зато тоже правильно и по другому.
И возможно человек просто не прочитал "А может принимать значение 0 или 1" и написал просто замену
Если (А = 0) Тогда
    B = 2;
Иначе
    В = 1;
КонецЕсли;
...Показать Скрыть

для любых значений А
24. PlatonovStepan (Jogeedae) 12.05.10 02:56
:!: код может и ошибочный, но алгоритм мне нравицо :D
Задача 4:
Для сч = 1 По ?(а>б,а,б) Цикл
	Асч = ?(сч>а,неопределено,А[сч]);
	Бсч = ?(сч>б,неопределено,Б[сч]);
	Сообщить(?(Асч>Бсч,Асч,Бсч));
	Сообщить(?(Асч<Бсч,Асч,Бсч));
КонецЦикла;
...Показать Скрыть


*точно ошибочный :)

вот вроде бы правильное решение:
счА = 0;
счБ = 0;
Пока НЕ (счА=а И счБ=б) Цикл
	Если (счА<а) И ((мА[счА] <= мБ[счБ-(счБ=б)]) ИЛИ (счБ=б)) Тогда
		Сообщить(мА[счА]);
		счА = счА + 1;
	КонецЕсли;
	Если (счБ<б) И ((мБ[счБ] <= мА[счА-(счА=а)]) ИЛИ (счА=а)) Тогда
		Сообщить(мБ[счБ]);
		счБ = счБ + 1;
	КонецЕсли;
КонецЦикла;
...Показать Скрыть
25. Константин Коваленко (costy_admin) 12.05.10 05:36
// чА число А
// чБ Число Б
чА = (чА+чБ)-чА;
чБ = (чА+чБ)-чБ;
// НчА конечный результат число А
// НчБ конечный результат числа Б
при учете что числа положительные....

26. PlatonovStepan (Jogeedae) 12.05.10 05:40
в (24) по сравнению с вариантом (21) итераций как будто меньше :D
27. Александр (Креатив) 12.05.10 07:58
вероятно так заработает тоже, но по скорости уступит (24)
счА = 0;
счБ = 0;
вра = ма[1];
врб = мб[1];
Пока 1=1 Цикл
   Если вра <  врб  Тогда
      Сообщить(вра);
      счА = счА + 1;
   Иначе
      Сообщить(врб);
      счБ = счБ + 1;
   КонецЕсли;
   Если счА>а  Тогда
       вра = мб[б];
   Иначе
       вра = ма[счА];
   КонецЕсли;
   Если счБ>б  Тогда
       врб = ма[а];
   Иначе
       врб = мб[счБ];
   КонецЕсли;
   Если (счБ>б) и (счА>а)  Тогда
      Прервать;
   КонецЕсли;
КонецЦикла;
...Показать Скрыть

28. salex10 12.05.10 08:55
Для (25) 1-я задача, я так понимаю
чА = (чА+чБ)-чА;
чБ = (чА+чБ)-чБ;
- в последнем варажении уже чА=чБ, поэтому чБ будет = чБ

мое решение:
А = А - Б
Б = Б + А
А = Б - А
annak2980; Evg-Lylyk; +2 Ответить
29. salex10 12.05.10 09:10
2-я задача - рекурсия скорее всего
3-я: В = 2 - А
4-я:
счА = 1;
счВ = 1;
Для Сч = 1 По а + в Цикл
Если счА > а Тогда
Если счВ > в Тогда
Прервать;
Иначе
Сообщить(В[счВ]);
счВ = счВ + 1;
Конецесли;
ИначеЕсли А[счА] < B[счВ] Тогда
Сообщить(А[счА]);
счА = счА + 1;
Иначе
Сообщить(В[счВ]);
счВ = счВ + 1;
Конецесли;
Конеццикла;
30. Сергей (ildarovich) 12.05.10 09:54
Вот выпендрЁЖный вариант (21), если немного отступить от "буквы" задания
ёж = 0; 
Для уж  = 0 По А.Количество() + В.Количество() - 1 Цикл 
   що = (уж - ёж) = В.Количество() ИЛИ ёж < А.Количество() И А[ёж] < В[уж - ёж]; 
   Сообщить(?(що, "а" + ёж + "=" + А[ёж], "в" + (уж - ёж) + "=" + В[уж - ёж])); 
   ёж = ёж + що 
КонецЦикла
...Показать Скрыть

Можно еще сократить одну строку, если дважды вычислять "що".
А по скорости было бы сравнить интересно...
31. Андрей Костенко (Spitfire) 12.05.10 10:25
вторая задача легко пишется и без рекурсии:
F_n = 1;
n_fact = 1;
i = 1;
while i<=n do
   n_fact = n_fact * i;
   F_n = F_n * n_fact;
   i = i +1;
end;
Return F_n;
...Показать Скрыть
freeek; Elolaz; Evg-Lylyk; +3 Ответить 1
32. Vasilina Vasilina (Vasilina2009) 12.05.10 10:26
1. Решение: при b<>0
a = a*b
b=a/b
a=a/b
karagiosis; Evg-Lylyk; +2 Ответить 1
33. Андрей Костенко (Spitfire) 12.05.10 10:29
для первой задачи, если нужно поменять местами не числовые переменные (а произвольные двоичные данные), то можно написать так:
a = a xor b;
b = b xor a;
a = a xor b;

тут xor - оператор логического исключающего ИЛИ
34. Андрей (Vashenko) 12.05.10 10:59
1. a=a*b=20; b=a/b=5; a=a/b=4
2. F=1; Для K=1 По n Цикл F=F*(K)^(n-K+1) КонецЦикла
3. B=2-A
4. Для Сч=1 По а+b Цикл
ТекНомерА=0; ТекНомерB=0;
Если А[ТекНомерА+Сч]>B[ТекНомерB+Сч] Тогда
ТекНомерА=ТекНомерА+1; Сообщить(А[ТекНомерА]);
Иначе
ТекНомерB=ТекНомерB+1; Сообщить(B[ТекНомерB]);
КонецЕсли
35. Андрей (Vashenko) 12.05.10 11:04
1. a=a*b=20; b=a/b=5; a=a/b=4
2. F=1; Для K=1 По n Цикл F=F*(K)^(n-K+1) КонецЦикла
3. B=2-A
4. Для Сч=1 По а+b Цикл
ТекНомерА=0; ТекНомерB=0;
Если А[ТекНомерА+Сч]>B[ТекНомерB+Сч] Тогда
ТекНомерА=ТекНомерА+1; Сообщить(А[ТекНомерА]);
Иначе
ТекНомерB=ТекНомерB+1; Сообщить(B[ТекНомерB]);
КонецЕсли
36. Евгений Люлюк (Evg-Lylyk) 12.05.10 11:48
(31) Я решил аналогично
РезультатФункции = 1; ФакториалДляПоследнегоСч = 1;
Для Сч = 2 По Н Цикл
	ФакториалДляПоследнегоСч = ФакториалДляПоследнегоСч * Сч;
	РезультатФункции = РезультатФункции * ФакториалДляПоследнегоСч;
КонецЦикла;
...Показать Скрыть

(32) в решении
A=A+B;....
есть момент - переполнение (выход за границы типа) хотя в 1С это наверно не актуально ну в вашем решении этот момент более актуален
(33) Правильно конечно, но в 1С нет XOR (вариант с XOR более универсален он обменяет значениями не только числа)
37. Евгений Люлюк (Evg-Lylyk) 12.05.10 11:54
(34), (35) неверно 4
Вынести за цикл:
ТекНомерА=0; ТекНомерB=0;

Заменить
Если А[ТекНомерА+Сч]>B[ТекНомерB+Сч] Тогда

на
Если А[ТекНомерА]<B[ТекНомерB] Тогда

по возрастанию
и еще учесть что массив А полностью меньше массива Б
38. Александр (chea06) 12.05.10 12:41
вероятно был у этого же работодателя, только решал эти задачи на месте на листке. И кстати в задании не сказано, что задачи надо решать методами 1С :)
39. Владислав Цылёв (vet7777) 12.05.10 12:55
в 3 задаче я не сразу заметил условие что "А может принимать значение 0 или 1"
и решил ее при условии, что А может принимать любое значение - положительное, отрицательное или 0.

а вы попробуйте! задача гораздо интереснее получается. 8-)
40. Андрей (Vashenko) 12.05.10 13:20
(37) спасибо за поправки. накалякал просто идеи без проверки :)
41. Дмитрий К (ll13) 12.05.10 13:47
(39) Это очень плохо, если Вы даже условие прочитать не можете правильно, что же дальше то будет, когда до реализации дойдёт :o
Я бы такого работника не взял :D
42. Владислав Цылёв (vet7777) 12.05.10 14:02
я просто усложнил задачу...
мне по барабану что ты там думаешь, я бы тебя тоже не взял 8-)
ты реши с тем условием, что я написал, потом пальцы кидай ;)
43. Дмитрий Ташланов (Necytij) 12.05.10 15:45
Задачки все десткие, но, честно говоря, над последней пришлось подумать минутку... :oops:
44. Эстер Коган (e.kogan) 12.05.10 15:53
(41) Жизнь научила, что думать надо сразу универсально :) иначе бы А было Булевым.
45. Эстер Коган (e.kogan) 12.05.10 16:29
На четвёртую задачку: не оттестированный, но вроде корректный вариант
ТекущийЭлементА=0;
ТекущийЭлементБ=0;
КвоА=А.Количество();
КвоБ=Б.Количество();
ТекстВыполнить="ТекущийЭлемент#=ТекущийЭлемент#+1;
|Сообщить(""число ""+#[ТекущийЭлемент#]+"" - ""+й+"" элемент упорядоченного массива, ""+ТекущийЭлемент#+"" элемент массива #"")";
Для й=0 по КвоА + КвоБ Цикл
	ВыводимА=Не (ТекущийЭлементА>КвоА);
	ВыводимБ=Не (ТекущийЭлементБ>КвоБ);
	Если Не (ВыводимА или ВыводимБ) Тогда Прервать; КонецЕсли; //оба массива кончились
	Если ВыводимА и ВыводимБ Тогда 
		ВыводимА=(А[ТекущийЭлементА]>Б[ТекущийЭлементБ]);
	КонецЕсли;
	Выполнить(СтрЗаменить(ТекстВыполнить,"#",?(ВыводимА,"А","Б")));		
КонецЦикла;
...Показать Скрыть

46. Дмитрий К (ll13) 12.05.10 17:02
(44) В институте научили, что самое главное правильно понять и усвоить условия задачи.
Если это сделано - то пол задачи решено :)
47. Эстер Коган (e.kogan) 12.05.10 17:06
(45) Однако при числовом реквизите А "защиту от дурака" лучше поставить ;) мало ли что пользователь введёт? Или до того проверку влепить, или делать неявным приведением значения.
Во всяком случае наши преподаватели обязательно попробуют ввести при проверке А=3 8-)
48. o.nikolaev.infostart (o.nikolaev) 12.05.10 22:26
Я тоже их на месте решал. И работодатель известный :) Что-то не верю в то что их прислали... ;)
49. Олег (breyn) 13.05.10 09:48
50. Геннадий Кондрашкин (Kondrat) 13.05.10 10:14
Для первой задачки:
не так изящно, но все же....

а=Строка(а)+"*"+Строка(б);
б=Число(Лев(а,Найти(а,"*")-1));
а=Число(Сред(а,Найти(а,"*")+1));
51. Игорь Дремов (Hitcher) 13.05.10 15:26
Задача 3. Решение для любого значения А :D

Попытка
В = 1/А;
В = 2;
Исключение
В = 1 ;
КонецПопытки;
freeek; VoShk; +2 Ответить 1
52. Дмитрий К (ll13) 13.05.10 16:55
(51) Ну ты дружок замутил ... Попытка ... Исключение ... КонецПопытки
Одна из самых медленных конструкций в 1С ...
53. Сергей Ожерельев (Поручик) 13.05.10 17:23
54. Владислав Цылёв (vet7777) 14.05.10 08:47
а теперь решите в таком варианте:
Написать функцию B=F(A) на встроенном языке 1С, при следующих условиях:
1. если А=0, то B=2, иначе B=1
2. полученное однострочное выражение, должно выполняться в табло 1С при различных значениях A
3. не допускается использование условных операторов (например , ?(А = 0;2;1)), не допускается использование попыток/исключений (что в общем то в табло и не получится :).

PS: мы в конторе уже напридумывали 3 варианта решения.
55. Евгений Долиновский (Dolly_EV) 17.05.10 10:18
(18)(19)(20) в (17) проверка УСЛОВИЯ (Истина/Ложь), что по условию задачи низзя ;)
56. Евгений Люлюк (Evg-Lylyk) 17.05.10 11:35
(55) По условии задачи нельзя использовать условных операторов например ?.
В решении B = 1+(A=0); нет условных операторов.
57. Maxim k (maxis33) 24.05.10 09:50
Мне тоже такие присылали по почте. Довольно занятно было порешать, даже без особой цели устроиться к ним на работу:)
58. vodyanoy vodyanoy (vodyanoy) 27.05.10 17:14
Да, работодатель известный. Года 3 назад у них в офисе я эти задачки решал на листочке. Странно, что они их до сих пор совсем не изменили.
По поводу 2-й задачки. Тут кто-то рекурсию предлагал. Я тоже тогда рекурсию замутил. Меня, естественно, завернули с этой мыслью несуразной :D , т.к. циклов должно быть по условию всего ОДИН, а рекурсия это уже совсем не один. Не додумался тогда сходу, ну да ладно.
59. Владимир Казначеев (Mogidin) 04.06.10 10:54
1) # a=4 b=5
a=a+b # a=9 b=5
b=a-b # a=9 b=4
a=a-b # a=5 b=4

2) Результат=1; Элемент=1;
Для Инд=1 По Н Цикл
Элемент=Элемент*Инд;
Результат=Результат*Элемент;
КонецЦикла;
# Результат = F(n)

3) B=2-A

4) Инд1=1; Инд2=1; Эл1=А[Инд1]; Эл2=В[Инд2];
Для Инд=1 По а+в Цикл
Если (Эл1<Эл2) И (Инд1<а) Тогда
Сообщить(Эл1); Инд1=Инд1+1; Эл1=А[Инд1];
Иначе
Сообщить(Эл2); Инд2=Инд2+1; Эл2=В[Инд2];
КонецЕсли;
КонецЦикла;

5) Контроль=0; Сумма=0;
Для Инд=1 По Н Цикл
Контроль=Контроль+Инд;
Сумма=Сумма+А[Инд];
КонецЦикла;
Пропавший=Контроль-Сумма;

*везде подразумевается индексация массивов с 1
odin777; rom-x; Evg-Lylyk; +3 Ответить
60. Roman (romech) 15.11.10 11:31
1) подразумевается, что оба числа не равны нулю, в другом случае делается проверка и решение очевидно. Итак решение: b=b*a; a=b/a; b=b/a
2)Значение = 1;
Для н=1 по нн Цикл
Значение = Значение * Значение * н;
н = н + 1;
КонецЦикла
3)В = 2 - А
4) и 5) думаю много похожих решений уже есть. А теперь почитаю, чего написали другие =)
61. xs19 (Oleg_nsk) 22.11.10 10:56
Задача №5

Сум = А.Количество();
Для н = 0 По А.Количество()-1 Цикл
Сум = Сум - А[н] + н;
КонецЦикла;
Сообщить(Сум);
62. xs19 (Oleg_nsk) 22.11.10 11:00
Задача №4

ИндА = 0;
ИндБ = 0;
Для н = 1 По (КолА + КолБ) Цикл
Если (КолА = ИндА) и (КолБ = ИндБ) Тогда
Прервать;
ИначеЕсли (КолА = ИндА) и Не (КолБ = ИндБ) Тогда
Сообщить(Б[ИндБ]);
ИндБ = ИндБ+1;
ИначеЕсли Не (КолА = ИндА) и (КолБ = ИндБ) Тогда
Сообщить(А[ИндА]);
ИндА = ИндА+1;
ИначеЕсли А[ИндА] < Б[ИндБ] Тогда
Сообщить(А[ИндА]);
ИндА = ИндА+1;
ИначеЕсли А[ИндА] > Б[ИндБ] Тогда
Сообщить(Б[ИндБ]);
ИндБ = ИндБ+1;
ИначеЕсли А[ИндА] = Б[ИндБ] Тогда
Сообщить(А[ИндА]);
Сообщить(Б[ИндБ]);
ИндА = ИндА+1;
ИндБ = ИндБ+1;
КонецЕсли;
КонецЦикла;
63. Роман Хусяинов (rom-x) 06.10.11 15:16
1) а = а + (b - a)
b = b - (b - a)

2) Перем Факт, Рез, Знач;
Рез = 1; Знач = 1;
Для ин= 1 По Факт Цикл
Знач = Знач*ин;
Рез = Рез*Знач;
КонецЦикла;

3) B = (B + A) - A
64. Евгения Полякова (JaneP) 01.03.13 16:34
(2) YVolohov,
Другое решение:
b=b-a
a=a+b
b=a-b
65. gangstar94 gangstar94 (gangstar94) 28.11.14 10:28
Ответ на первую задачу из 10 класса :
А=4;
Б=5;
Если А=4 тогда
А=5 ;
Иначе Сообщить("Условие не выполнено") ;
КонецЕсли ;
Если Б=5 тогда
Б=4
Иначе Сообщить ("Условие не выполнено") ;
КонецЕсли ;
АА="А="+А ;
ББ="Б="+Б ;
Сообщить (АА);
Сообщить (ББ);
66. Евгений Люлюк (Evg-Lylyk) 28.11.14 12:52
(65)
Задача 1.
Объявлены две числовые переменные a и b. Необходимо сделать так, чтобы без объявления других переменных в результате работы алгоритма значения переменных поменялись местами. Например, если изначально a = 4, b = 5, то в результате алгоритма стало a = 5, b = 4. Применять можно только операции присваивания и арифметические операции с числами и значениями переменных.
Решение:
b=b-a
a=a+b
b=a-b
67. i_ a (i_a) 11.04.15 13:40
В = Число((А = 0)+1)
, для любого значения А.
Спасибо автору данной публикации.
68. Anatolii Karasev (KapasMordorov) 25.06.16 10:40
http://www.forum.mista.ru/topic.php?id=368453&page=1
Пост 6.
Всё-таки надо было гуглить и тогда бы прочитал местный пост Поручика.
69. Максим *** (premier) 25.06.16 15:35
(3) YVolohov, При А = 100, например, результат будет явно не верным.
70. Максим *** (premier) 25.06.16 15:43
(22) ll13, см. мой предыдущий комментарий.
71. Максим *** (premier) 25.06.16 15:46
(63) rom-x,
2) Перем Факт, Рез, Знач;
Рез = 1; Знач = 1;
Для ин= 1 По Факт Цикл
Знач = Знач*ин;
Рез = Рез*Знач;
КонецЦикла;

Переменная Факт не инициализирована, 1С сразу выдаст сообщение об ошибке о невозможности приведения переменной Факт к типу "Число".