cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход

 
 
  ГлавнаяСправкаПоискВход  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Сортировка элементов массива по возрастанию (Прочитано 408 раз)
Smith
Начинающий пользователь
*
Вне Форума



Сообщений: 1
Сортировка элементов массива по возрастанию
08.11.2022 :: 14:51:39
 
Здравствуйте. Не могу разобраться с созданием пользовательской функции.
Цитата:
Создайте пользовательскую функцию SortDigit. Параметром функции является массив, элементами которого могут быть числа, строки и пустые значения. Результат работы функции — сортированный по возрастанию массив, включающий только числа из исходного массива. Для сортировки массива используйте встроенную функцию SortEx.

Вариант алгоритма функции SortDigit
...

Я, так, понимаю, функция должна иметь примерный вид:
Код:
@M
@i:=VALCOUNT (@M)
WHILE @M>0 DO
IF NUM @M(@i)
THEN
@M(@i):=@S
@i:=@i-1
MESSAGE (
@res:=SORTEX(@S,1);)
 

Наверх
 
 
IP записан
 
Sinilga
Профи
****
Вне Форума


«Главное - улыбка, а остальное
- по инструкции»

Сообщений: 141
Re: Сортировка элементов массива по возрастанию
Ответ #1 - 08.11.2022 :: 18:08:36
 
Первые две строки абсолютно правильные.
Дальше надо разбираться:
Цитата:
@M
@i:=VALCOUNT (@M)


WHILE
@M>0
DO            // 1) Смотрим на блок-схему: там написано "@i  > 0";
                                      // 2) тело цикла нужно взять в скобки (посмотрите примеры
                                      //     оформления цикла в документации)

   IF NUM
@M(@i)
THEN   // Здесь действительно нужна функция NUM,
                                      // но ее параметр следует взять в скобки

   
@M(@i):=@S 
             // "Добавить @M(@i) в массив @S". Вы делаете наоборот -
                                      // записываете @S в @M(@i).
                                       // Почитайте раздел о работе с массивами 

   @i:=@i-1                      // здесь все правильно


// Цикл закончился
// Результат функции SORTEX нужно присвоить специальной переменной @ret
// На этом работа пользовательской функции завершается


// MESSAGE лучше вынести в ту формулу, из который вы вызываете SortDigit. Чтобы выдать все элемены массива в строчку используйте фукцию CATVAL

MESSAGE (
   
@res:=SORTEX(@S,1);
)



Наверх
 
WWW  
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать