М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Готовя файл для вступительного экзамена, аспирант Сидоров сделал следующее: - Заполнил случайными целыми числами массив из N элементов.

- Создал второй массив, из 2N элементов, и поместил туда элементы первого массива, каждый - в двух экземплярах.

- Программными средствами перемешал массив.

- Записал в текстовый файл все элементы второго массива, кроме последнего (по одному в строке).

Требуется по содержимому файла найти то число, которое в него не попало, т.к. было последним в массиве. Известно, что в массиве до 20000 элементов, а числа, которыми он заполнялся, не больше 10000. Опишите словесно идею алгоритма решения этой задачи. Постарайтесь предложить алгоритм, эффективный по времени и памяти.

👇
Ответ:
polinavak05
polinavak05
23.03.2022

В этой задаче непонятно, могут ли числа быть отрицательными.

Предположим, что нет, т.к. указано только ограничение сверху (числа меньше или равны 10000).

Могу предложить такой алгоритм:

1. Считаем данные в массив (назовем его original).

2. Создадим еще один массив (пока заполненный нулями) на 10001 элемент (учитываем 0). Его назовем counter.

3. Будем идти по массиву original, брать каждое число и прибавлять 1 в соответствующую ячейку counter, номер которой равен текущему числу.

Пример:

Пусть в нулевой ячейке массива original лежит число 100. Тогда прибавляем 1 к значению сотой ячейки counter. В следующей ячейке original пусть лежит 135. Тогда идем в 135-ую ячейку массива counter и прибавляем 1.

4. В итоге мы будем знать, сколько каких дано элементов.

5. Надо найти у какого значения не хватает пары. "Не хватает пары" в данном случае будет означать, что в соответствующей ячейке counter будет лежать нечетное число (если числа не могут повторяться, то это будет число 1, а в остальных ячейках 2; но мы не можем быть уверены, что числа не повторяются, поэтому решим в более общем виде).

6. Поэтому пройдемся по массиву

counter, проверяя каждую ячейку на четность. Только встречаем нечетную ячейку, сразу выводим ее номер и прекращаем выполнение программы (она такая одна).

Если все-таки там могут быть отрицательные числа (а ограничение по модулю), то надо просто ввести еще один массив negative_counter (10001 ячейка). Ноль в нем надо игнорировать (уже подсчитывается в обычном counter вместе с положительными числами), а при проходе массива original делать сначала проверку на положительное/отрицательное значение и при обращении к номеру ячейки negative_counter через значение текущей ячейки original не забывать ставить минус или модуль (будет что-то вроде negative_counter[-original[i]] += 1 или negative_counter[abs(original[i])] += 1). Потом пройти два массива (по очереди) с проверкой на четность. При выводе тоже не забыть про минус, если без пары окажется отрицательное число.

Плюсы алгоритма: он линейный.

Минусы: создаем лишний массив, т.е. используем лишнюю память.

4,7(51 оценок)
Открыть все ответы
Ответ:
tim1110
tim1110
23.03.2022

Объяснение:

1.утилиты, драйверы, операционные системы, системы программирования.

2. Вс программы, расширяющие возможности операционных систем, называются утилитами. драйверами.

3.прикладные программы

4 Программы, с которых пользователь может решать свои информационные задачи, не прибегая к программированию, называются прикладными программами.

Как правило, все пользователи предпочитают иметь набор прикладных программ, который нужен практически каждому. Их называют программами общего назначения. К их числу относятся:

-текстовые и графические редакторы, с которых можно готовить различные тексты, создавать рисунки, строить чертежи; проще говоря, писать, чертить, рисовать;

-системы управления базами данных (СУБД), позволяющие превратить компьютер в справочник по любой теме;

-табличные процессоры, позволяющие организовывать очень распространенные на практике табличные расчеты;

-коммуникационные (сетевые) программы, предназначенные для обмена информацией с другими компьютерами, объединенными с данным в компьютерную сеть.

Очень популярным видом прикладного программного обеспечения являются компьютерные игры. Большинство пользователей именно с них начинает свое общение с ЭВМ.

5.не знаю

4,4(32 оценок)
Ответ:
VIGOMIC
VIGOMIC
23.03.2022

Объяснение:

1.утилиты, драйверы, операционные системы, системы программирования.

2. Вс программы, расширяющие возможности операционных систем, называются утилитами. драйверами.

3.прикладные программы

4 Программы, с которых пользователь может решать свои информационные задачи, не прибегая к программированию, называются прикладными программами.

Как правило, все пользователи предпочитают иметь набор прикладных программ, который нужен практически каждому. Их называют программами общего назначения. К их числу относятся:

-текстовые и графические редакторы, с которых можно готовить различные тексты, создавать рисунки, строить чертежи; проще говоря, писать, чертить, рисовать;

-системы управления базами данных (СУБД), позволяющие превратить компьютер в справочник по любой теме;

-табличные процессоры, позволяющие организовывать очень распространенные на практике табличные расчеты;

-коммуникационные (сетевые) программы, предназначенные для обмена информацией с другими компьютерами, объединенными с данным в компьютерную сеть.

Очень популярным видом прикладного программного обеспечения являются компьютерные игры. Большинство пользователей именно с них начинает свое общение с ЭВМ.

5.не знаю

4,5(46 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ