Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 18:23

Функция с бесконечным циклом

Автор laird, 05 июл 2017, 19:11

0 Пользователей и 1 гость просматривают эту тему.

laird

Здравствуйте, не подскажите команду, которая в функции выводит строку (К примеру "Привет") бесконечное количество раз, пока не дойдет до определенного числа, которое я задал?
К примеру задал число 9.
И она выводит эту строку 9 раз, а потом прекращает.

laird

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

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

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

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

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


Сам код, и вот проблема в 1 моменте, почему то когда задаю тоже условия для num2, функция все равно бесконечно отображает. А надо, чтобы она остановилась, пока не станет равна num1 или num2.

Функция функ(num1,num2,str1)
   Если num1 > 10 или num2 > 10 тогда //условия что, если 1 из заданных чисел больше 10, то функция прекращается и возвращает 0
   Возврат 0
   Иначе
   Н=0;
   Пока Н<>num1 или Н<>num2  //для 2ого числа условие почему то не работает 
      Цикл
      Н=Н+1;
   Сообщить (str1);
      КонецЦикла;
      Если н=num1 тогда возврат 1 иначе конецесли
      Конецесли;   
Конецфункции

#Если Клиент Тогда
Сообщить(функ(7,2,"Строка")); //задал значения и вывод сообщения
#КонецЕсли
Добавлено: 06 июл 2017, 03:02


Функция функ(num1,num2,str1)
Если num1 > 10 или num2 > 10 тогда //условия что, если 1 из заданных чисел больше 10, то функция прекращается и возвращает 0
Возврат 0
Иначе
Н=0;//точка отчета цикла
Если num1<num2 тогда //не получилось задать в 1 цикле, пришлось разделить
Пока Н<>num1    //цикл для 1 числа
Цикл
Н=Н+1;
Сообщить (str1);
КонецЦикла;
Если н=num1 тогда возврат 1 иначе конецесли;
иначе
Пока Н<>num2 //цикл для 2 числа   
Цикл
Н=Н+1;
Сообщить (str1);
КонецЦикла;
Если н=num2 тогда возврат 2 иначе конецесли;
конецесли;

Конецесли;
   

Конецфункции

#Если Клиент Тогда
Сообщить(функ(2,9,"Строка")); //задал значения и вывод сообщения
#КонецЕсли

Вот что вышло, подскажите, как можно сократить?

x3m888

   Для А= 1 По НужноеКолвоРазОбхода Цикл
      Сообщить("Привет, мир!");
   КонецЦикла;

Dethmontt

Цитата: x3m888 от 06 июл 2017, 09:22Для А= 1 По НужноеКолвоРазОбхода Цикл
      Сообщить("Привет, мир!");
   КонецЦикла;

Браво!!!
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

ilyay

Цитата: laird от 05 июл 2017, 23:37
Задание:Написать функцию. Функция возвращает числовое значение. На входе у функции два целочисленных параметра (num1,num2) и одна строка (str1).

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

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

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

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




Если Num1>10 или Num2>10 или Num1<1 или Num2<1 Тогда Возврат 0; КонецЕсли;
Инд = 1;
Пока Истина Цикл
Сообщить(str1);
Если Инд = Num1 Тогда
    Возврат 1;
Иначе
    Возврат 2;
КонецЕсли;
Инд = Инд + 1;
КонецЦикла;

Добавлено: 06 июл 2017, 11:01


Цитата: Dethmontt от 06 июл 2017, 10:05
Цитата: x3m888 от 06 июл 2017, 09:22Для А= 1 По НужноеКолвоРазОбхода Цикл
      Сообщить("Привет, мир!");
   КонецЦикла;

Браво!!!
Не браво, цикл должен быть бесконечным!

Kironten

Цитата: ilyay от 06 июл 2017, 11:00

...
Если Инд = Num1 Тогда
    Возврат 1;
ИначеЕсли Инд = Num2 Тогда
    Возврат 2;
КонецЕсли;
...

Скорее так.

ilyay

Цитата: Kironten от 06 июл 2017, 11:14
Цитата: ilyay от 06 июл 2017, 11:00

...
Если Инд = Num1 Тогда
    Возврат 1;
ИначеЕсли Инд = Num2 Тогда
    Возврат 2;
КонецЕсли;
...

Скорее так.
Да, верно.

laird

Цитата: ilyay от 06 июл 2017, 11:00или Num1<1 или Num2<1
объясните этот момент, не очень его понял. Типа мы тут минус бесконечность,0 и отрицательные числа исключили? Поэтому клиент начинает глючить при запуске,когда я пробовал по своему?
Цитата: ilyay от 06 июл 2017, 11:00Если Инд = Num1 Тогда
    Возврат 1;
Иначе
    Возврат 2;

А вот тут, я так понял, вы рассмотрели только num1, потому что цикл может остановиться только в 2ух вариантах?


ilyay

Цитироватьобъясните этот момент, не очень его понял. Типа мы тут минус бесконечность,0 и отрицательные числа исключили?
Ничего не было сказано про отрицательные числа и ноль. Надо ставить проверку, либо принимать решение о том, какой результат должен быть. Вообще, если условия нет, то результат неопределен (может быть любым, это допустимо: "мусор на входе - мусор на выходе").

Да, т.к. только 2 варианта. Ошибка была в том, что он остановится на первой же итерации при попадании в Иначе.

KUGUAR911

Цитата: ilyay от 06 июл 2017, 17:28
Цитироватьобъясните этот момент, не очень его понял. Типа мы тут минус бесконечность,0 и отрицательные числа исключили?
Ничего не было сказано про отрицательные числа и ноль. Надо ставить проверку, либо принимать решение о том, какой результат должен быть. Вообще, если условия нет, то результат неопределен (может быть любым, это допустимо: "мусор на входе - мусор на выходе").

Да, т.к. только 2 варианта. Ошибка была в том, что он остановится на первой же итерации при попадании в Иначе.

Доброго времени суток, столкнулся с таким вопросом: как функция считает количество повторений?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск