Вход | Регистрация


Найти количество различных элементов в массиве.

Найти количество различных элементов в массиве.
Я
   Нач программист
 
05.09.16 - 14:38
Найти количество различных элементов в массиве.
    
    МассивЧиселВСтроку="";
    КоличествоСхожихЭлементов=0;
    а=0;
        
    МассивЧисел=Новый Массив(20);
    ГСЧ=Новый ГенераторСлучайныхЧисел(20);
    
    Для Счетчик=0 По 19 Цикл
        
        СлучайноеЧисло=ГСЧ.СлучайноеЧисло(1,40);
        МассивЧисел[Счетчик]=СлучайноеЧисло;
        МассивЧиселВСтроку=МассивЧиселВСтроку+МассивЧисел[Счетчик]+" ";
        
    КонецЦикла;
    
    Сообщить("Массив Чисел: "+МассивЧиселВСтроку);
    
    Для Счетчик=0 По 19 Цикл
                
        Для СчетчикПроверкиКаждогоЭлемента=0 По 19 Цикл
            
            Если Счетчик<>СчетчикПроверкиКаждогоЭлемента И МассивЧисел[Счетчик]=МассивЧисел[СчетчикПроверкиКаждогоЭлемента] Тогда
                КоличествоСхожихЭлементов=КоличествоСхожихЭлементов+1;       
            КонецЕсли;                             
            
        КонецЦикла;
        
    КонецЦикла;
    
    Сообщить("Количество схожих элементов: "+КоличествоСхожихЭлементов);
    Сообщить("Количество различных элементов: "+(20-КоличествоСхожихЭлементов));
 
 
   Нач программист
 
1 - 05.09.16 - 14:40
Неправильно считает цикл когда в массиве схожие элементы 3, 4, 5,. . . . .
   DTX 4th
 
2 - 05.09.16 - 14:42
КолРазличных = 0;
Соответствие = Новый Соответсвие;
Для Счетчик=0 По 19 Цикл
        Число = МассивЧисел[Счетчик];
        Если Соответсвие[Число] = Неопределено Тогда
            КолРазличных = КолРазличных + 1;
            Соответсвие[Число] = КолРазличных;
        КонецЕсли;
КонецЦикла;
Сообщить(КолРазличных);
   orefkov
 
3 - 05.09.16 - 14:45
Соответствие = Новый Соответсвие;
Для Счетчик=0 По 19 Цикл
    Соответсвие[Число] = 1;
КонецЦикла;
Сообщить(Соответствие.Количество());
   Нач программист
 
4 - 05.09.16 - 14:45
Соответствие - это массив да?
   PR
 
5 - 05.09.16 - 14:47
(4) Нет
Массив да — это
МассивДа = Новый Массив;
МассивДа.Добавить(Истина);
МассивДа.Добавить(Истина);
МассивДа.Добавить(Истина);

   DTX 4th
 
6 - 05.09.16 - 14:47
(3) Так и знал, что нужно в СП заглянуть)
   orefkov
 
7 - 05.09.16 - 14:48
числа = Новый Массив;
...
Ключи = Новый Соответствие;
Для Каждого э Из числа Цикл
    Ключи[э] = 1;
КонецЦикла;
Сообщить(Ключи.Количество());
   Нач программист
 
8 - 05.09.16 - 14:52
(2) Выдает такую ошибку
{Форма.Форма.Форма(105,15)}: Переменная не определена (Соответсвие)
            Если <<?>>Соответсвие[Число] = Неопределено Тогда (Проверка: Тонкий клиент)
{Форма.Форма.Форма(107,14)}: Переменная не определена (Соответсвие)
                <<?>>Соответсвие[Число] = КолРазличных; (Проверка: Тонкий клиент)
   orefkov
 
9 - 05.09.16 - 14:52
Вот так точно будет
числа = Новый Массив;
Ключи = Новый Соответствие;
Для Каждого э Из числа Цикл
    Ключи.Вставить(э, 1);
КонецЦикла;
Сообщить(Ключи.Количество());
   palpetrovich
 
10 - 05.09.16 - 14:53
вставлю 5 копеек :)

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Числа");
ТЗ.ЗагрузитьКолонку(МассивЧисел, "Числа");
ТЗ.Свернуть("Числа",);
сообщить("разных "+ТЗ.КоличествоСтрок());
 
 Рекламное место пустует
   PR
 
11 - 05.09.16 - 14:54
(8) Один безграмотный, другой слепой

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует