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

Задача по 1С

Автор Тима22, 01 авг 2023, 17:36

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

Тима22

Создайте массив и добавьте в него следующие числа:
14
15
15
14
2
18
19
20
2
2
Напишите программный код, который удалит из массива повторяющиеся
элементы.

Вот мой код, запутался. Буду благодарен за помощь.

МассивДанных = Новый Массив;
   
   МассивДанных.Добавить(14);
   МассивДанных.Добавить(15);
   МассивДанных.Добавить(15);
   МассивДанных.Добавить(14);
   МассивДанных.Добавить(2);
   МассивДанных.Добавить(18);
   МассивДанных.Добавить(19);
   МассивДанных.Добавить(20);
   МассивДанных.Добавить(2);
   МассивДанных.Добавить(2);
   
   МассивДанных2 = Новый Массив;
   
   Для каждого Элемент из МассивДанных цикл
      Если МассивДанных2.Найти(Элемент) = true тогда
         МассивДанных2.Добавить(Элемент);
         
      Иначе
         МассивДанных2.Добавить(Элемент);
         Сообщить("Такой элемент у нас уже есть");
         Продолжить;   
      КонецЕсли;
   КонецЦикла;
   
   Для каждого Элемент из МассивДанных2 цикл
      Сообщить(Элемент);
   КонецЦикла;

fruitella

Алгоритмы везде плюс минус одинаковые на каждом языке, можно на плюсах загуглить алгос и сделать по аналогии.
Вот решение:

&НаКлиенте
Процедура УдалитьДубликаты(Команда)
    МассивЧисел = Новый Массив;
    МассивЧисел.Добавить(14);
       МассивЧисел.Добавить(15);
       МассивЧисел.Добавить(15);
       МассивЧисел.Добавить(14);
       МассивЧисел.Добавить(2);
       МассивЧисел.Добавить(18);
      МассивЧисел.Добавить(19);
       МассивЧисел.Добавить(20);
       МассивЧисел.Добавить(2);
       МассивЧисел.Добавить(2);
       
    МассивБезДублей = УдаляемДубли(МассивЧисел);
   
    Для Каждого Значение Из МассивБезДублей Цикл
        Сообщить("" + Значение);
    КонецЦикла;
   
   
КонецПроцедуры


Функция УдаляемДубли(ИсходныйМассив)
    УникальныеЗначения = Новый ТаблицаЗначений;
    УникальныеЗначения.Колонки.Добавить("Значение");
   
    Для Каждого Значение Из ИсходныйМассив Цикл
        ПоискУникальных = УникальныеЗначения.Найти(Значение, "Значение");
       
        Если ПоискУникальных = Неопределено Тогда
            Строка = УникальныеЗначения.Добавить();
            Строка.Значение = Значение;   
        КонецЕсли;
    КонецЦикла;
   
    НовыйМассив = Новый Массив;
   
    Для Каждого Строка Из УникальныеЗначения Цикл
        НовыйМассив.Добавить(Строка.Значение);
    КонецЦикла;
   
    Возврат НовыйМассив;   
КонецФункции


antoneus

Зачем прям целую ТЗ создавать, если можно еще одним массивом обойтись?

LexaK

Тима22, попробуйте такой код, ваш, немного подправленный
МассивДанных2 = Новый Массив;
   
Для каждого лкЗначение из МассивДанных цикл
    Если МассивДанных2.Найти(лкЗначение) = Неопределено тогда
        МассивДанных2.Добавить(лкЗначение);
      Иначе
        Сообщить("Повторый элемент: " + лкЗначение);
КонецЕсли;
КонецЦикла;

//вывод результата
Сообщить("Результат:");
Для каждого лкЗначение из МассивДанных2 цикл
Сообщить("Элемент: " + лкЗначение);
КонецЦикла;
   
если помогло нажмите: Спасибо!

Теги: 1С Задача 

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

Рейтинг@Mail.ru

Поиск