Проверить правильно ли написан код

1. arsen_botashev 27.12.18 17:24 Сейчас в теме
Здравствуйте, дали задание, необходимо проверить правильно ли написан код.
Задание:Написать функцию. Функция возвращает числовое значение. На входе у функции два целочисленных параметра (num1,num2) и одна строка (str1).

Если num1 или num2 больше 10, функция прекращается и возвращает 0.

Функция выводит строку str1 в бесконечном цикле с условиями:

Если строка str1 выведена num1 раз, то функция прекращается и возвращает 1.

Если строка str1 выведена num2 раз, то функция прекращается и возвращает 2.



Код:

Функция функ(num1,num2,str1)
Если num1 > 10 или num2 > 10 тогда
Возврат 0
Конецесли;
i=1;
Пока Истина Цикл
Сообщить(str1);
Если i = Num1 Тогда
Возврат 1;
ИначеЕсли i = Num2 Тогда
Возврат 2;
КонецЕсли;
КонецЦикла;
Конецфункции
По теме из базы знаний
Найденные решения
8. oleg-x 22 27.12.18 18:02 Сейчас в теме
(1)
Функция функ(num1,num2,str1) 
	Если num1 > 10 или num2 > 10 тогда 
		Возврат 0 
	Конецесли; 
	i=1; 
	Пока Истина Цикл 
		Сообщить(str1); 
		Если i >= Num1 Тогда 
			Возврат 1; 
		ИначеЕсли i >= Num2 Тогда 
			Возврат 2; 
		КонецЕсли;
		i=i+1;
	КонецЦикла; 
Конецфункции
Показать

1) Форматируйте код.
2) Делайте условие так, что бы цикл не превращался в бесконечный. В вашем варианте нет увеличения i. А даже если было бы, то в случае если num1 и num2 = 0, то цикл тоже превращается в бесконечный.
Еще может быть отрицательное число, но будем предполагать, что его не может быть.
arsen_botashev; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. alex-l19041 8 27.12.18 17:38 Сейчас в теме
(1) цикле не хватает
i= i + 1;
... и еще надо проверять, чтобы Num1 или Num2 было больше 0...
4. arsen_botashev 27.12.18 17:47 Сейчас в теме
(3)а где вставить i=i+1?
Может еще i=0 поставить?
6. YannikAlx 27 27.12.18 17:54 Сейчас в теме
(3)Типа так прописать вначале

Если num1<0 И num2 < 0 тогда
Возврат -1
Конецесли;
8. oleg-x 22 27.12.18 18:02 Сейчас в теме
(1)
Функция функ(num1,num2,str1) 
	Если num1 > 10 или num2 > 10 тогда 
		Возврат 0 
	Конецесли; 
	i=1; 
	Пока Истина Цикл 
		Сообщить(str1); 
		Если i >= Num1 Тогда 
			Возврат 1; 
		ИначеЕсли i >= Num2 Тогда 
			Возврат 2; 
		КонецЕсли;
		i=i+1;
	КонецЦикла; 
Конецфункции
Показать

1) Форматируйте код.
2) Делайте условие так, что бы цикл не превращался в бесконечный. В вашем варианте нет увеличения i. А даже если было бы, то в случае если num1 и num2 = 0, то цикл тоже превращается в бесконечный.
Еще может быть отрицательное число, но будем предполагать, что его не может быть.
arsen_botashev; +1 Ответить
11. arsen_botashev 27.12.18 19:19 Сейчас в теме
(8
 Функция функ(num1,num2,str1) 
    Если num1 > 10 или num2 > 10 или num1 <= 0 или num2 <= 0 тогда 
        Возврат 0 
    Конецесли; 
    i=1; 
    Пока Истина Цикл 
        Сообщить(str1); 
        Если i = Num1 Тогда 
            Возврат 1; 
        ИначеЕсли i = Num2 Тогда 
            Возврат 2; 
        КонецЕсли;
        i=i+1;
    КонецЦикла; 
Конецфункции
Показать


В окончательном варианте, так пойдет?
И еще вопрос, почему i >= num1?? Почему не i = num1?
13. oleg-x 22 27.12.18 22:03 Сейчас в теме
(11) Пойдет.
>= это если не делать проверку на число меньшее, чем i=1, если вдруг по какой то причине оно сюда придет. А так можно и равно.
14. arsen_botashev 27.12.18 22:43 Сейчас в теме
(13)понял, спасибо большое
10. spacecraft 27.12.18 18:46 Сейчас в теме
(1) не определены пограничные условия в задании для нулевых и отрицательных num. Будем считать, что раз строка не выводится, то и возвращаем 0.
Я бы решил так:
Функция функ(num1, num2, str1)
	МинНомер = Мин(num1, num2);
	Если Макс(num1, num2) > 10 Или МинНомер <= 0 Тогда 
		Возврат 0;
	КонецЕсли;
	Для i=1 По МинНомер Цикл
		Сообщить(str1);
	КонецЦикла;
	Возврат ?(num1 = МинНомер, 1, 2);
КонецФункции
Показать
2. M61 20 27.12.18 17:34 Сейчас в теме
Что-то похоже если не дописать после конецесли i=i+1 тогда цикл никогда не кончится и возврата значения не будет. Возврат значения будет только если при вызове функции передадут значения num1 и num2 больше 10 или равно 1.
5. arsen_botashev 27.12.18 17:48 Сейчас в теме
(2)i=i+1 перед концом цикла?
alex-l19041; +1 Ответить
7. YannikAlx 27 27.12.18 17:57 Сейчас в теме
(5) Главное пойми - i - это счетчик.
И он должен быть равен числу выводов строки.

Значит если поставишь изначально i=0
То i=i+1 надо ставить перед проверкой выведенного количества

А если так как сейчас i=1
То i=i+1 надо ставить после проверки выведенного количества
alex-l19041; +1 Ответить
9. M61 20 27.12.18 18:23 Сейчас в теме
(5)да, думаю про одно пишу другое, заработался
12. harvester_sorrow 24 27.12.18 19:45 Сейчас в теме
Как то смахивает на задание из универа,где то ввели предмет 1С ?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот