С++ Упражнения Одномерные массивы

  • Дан массив с известным количеством хранящихся в нем значений. Количество значений указать константой. Требуется выполнить следующее:
    Вывести массив на экран в обратном порядке
  • 1 2 3 = 3 2 1
  • Найти наименьший элемент и наименьший элемент по модулю
  • Найти и вывести на экран такие элементы, у которых оба соседних элемента как и сам он делятся нацело на одно и то же число
  • Выполнить пузырьковую сортировку массива по возрастанию и вывести исходный массив и обработанный на экран
  • Дать выбрать пользователю способ ввода данных в массив (ручной или случайный автоматический) и создать массив согласно выбранному условию
  • После заполнения массива прибавить к каждому элементу число 5 и вывести на экран
  • После заполнения массива прибавить к каждому третьему элементу число, которое находится в левом соседнем элементе
  • После заполнения массива прибавить к каждому элементу сумму чисел, которые являются его соседями через один
       1 2 3 4 5 = 0+1+3   0+2+4   1+3+5   2+4+0   3+5+0   5+0+0 = 4  6  9  6  5
  • Найти сумму и произведение всех элементов массива
  • Посчитать в массиве сумму всех элементов, входящих в диапазон [a..b]. a и b задаются во время выполнения программы
  • Определить сколько в массиве пар одинаковых элементов
  • Определить сколько в массиве элементов, равных сумме всех элементов массива
  • Найти номера максимального и минимального элемента. Определить сами элементы и вывести на экран, что минимальный элемент равен столько-то и его позиция такая-то и также про максимальный
  • Поменять местами наибольший элемент с наименьшим
  • Растасовать массив следующим образом
     1 2 3 4 5 6 7 = 2 1 4 3 6 5 7
  • Найти сумму всех чисел на диапазоне минимальный - максимальный элементы. Вычислить разность по Максимальный-Минимальный и прибавить к той сумме
  • Задан массив. Заменить число в заданной позиции суммой двух предыдущих
  • Найти и просуммировать все простые числа внутри массива
  • Пользователь задает интервал а-b Написать все элементы массива, которые не попадают в этот интервал. a и b - это индексы элементов массива
  • Просуммируйте элементы двух массивов
  • Найти среднее арифметическое всех элементов массива и посчитать количество чисел внутри массива не превышающих найденное
  • Посчитать процент вхождения каждого из чисел в массив и вывести результаты на экран. При выводе на экран числа не должны повторяться
  • Сожмите заданный массив отбрасыванием нулевых элементов
  • Посчитайте наибольшее число идущих подряд элементов
  • Предложите пользователю ввести число N. Сдвиньте все элементы массива вправо (влево) на N элементов
=========================================================== В программировании используют разные алгоритмы сортировок. Часто требуется упорядочить массив по каким-то критериям. Имеет смысл изучить и реализовать самому некоторые виды известных способов сортировок. Привожу названия:
  • Сортировка выбором - поиск наименьшего или наибольшего элемента и помещение его в начало или конец упорядоченного списка
     
    
  • Сортировка пузырьком - для каждой пары индексов производится обмен, если элементы расположены не по порядку
     
    
  • Сортировка перемешиванием - разновидность пузырьковой сортировки, в котором границы рабочей части массива (т.е. части массива, где происходит движение) устанавливаются в месте последнего обмена на каждой итерации. Массив просматривается поочередно справа налево и слева направо
     
    
  • Гномья сортировка - Алгоритм находит первое место, где два соседних элемента стоят в неправильном порядке и меняет их местами. Он пользуется тем фактом, что обмен может породить новую пару, стоящую в неправильном порядке, только до или после переставленных элементов. Он не допускает, что элементы после текущей позиции отсортированы, таким образом, нужно только проверить позицию до переставленных элементов
     
    
  • Сортировка вставками - определяем где текущий элемент должен находиться в упорядоченном списке и вставляем его туда
     
    
  • Сортировка слиянием выстраиваем первую и вторую половину списка отдельно, а затем — сливаем упорядоченные списки
     
    
  • Сортировка с помощью двоичного дерева - универсальный алгоритм сортировки, заключающийся в построении двоичного дерева поиска по ключам массива (списка), с последующей сборкой результирующего массива путём обхода узлов построенного дерева в необходимом порядке следования ключей. Данная сортировка является оптимальной при получении данных путём непосредственного чтения с потока (например с файла, сокета или консоли)
     
    
  • Алгоритм сортировки Timsort - Основная идея алгоритма в том, что в реальном мире сортируемые массивы данных часто содержат в себе упорядоченные подмассивы

     
    
  • Сортировка подсчётом - используется диапазон чисел сортируемого массива (списка) для подсчёта совпадающих элементов. Применение сортировки подсчётом целесообразно лишь тогда, когда сортируемые числа имеют (или их можно отобразить в) диапазон возможных значений, который достаточно мал по сравнению с сортируемым множеством, например, миллион натуральных чисел меньших 1000. Эффективность алгоритма падает, если при попадании нескольких различных элементов в одну ячейку, их надо дополнительно сортировать. Необходимость сортировки внутри ячеек лишает алгоритм смысла, так как каждый элемент придётся просматривать более одного раза
     
    
  • Блочная сортировка - сортируемые элементы распределяются между конечным числом отдельных блоков (карманов, корзин) так, чтобы все элементы в каждом следующем по порядку блоке были всегда больше (или меньше), чем в предыдущем. Каждый блок затем сортируется отдельно, либо рекурсивно тем же методом, либо другим. Затем элементы помещаются обратно в массив
     
    
  • Сортировка расческой - В сортировке пузырьком, когда сравниваются два элемента, промежуток (расстояние друг от друга) равен 1. Основная идея сортировки расчёской в том, что этот промежуток может быть гораздо больше, чем единица
     
    
  • Пирамидальная сортировка - превращаем список в кучу, берём наибольший элемент и добавляем его в конец списка
     
    
  • Плавная сортировка
     
  • Быстрая сортировка - широко известен как быстрейший из известных для упорядочения больших случайных списков; с разбиением исходного набора данных на две половины так, что любой элемент первой половины упорядочен относительно любого элемента второй половины; затем алгоритм применяется рекурсивно к каждой половине
     
  • Поразрядная сортировка
     

=========================
Есть еще разные алгоритмы, но даже все, которые назвал я знать не обязательно. Названия и описания взяты из Википедии. Если есть спортивный интерес и уйма времени, то можно разобрать все. Иначе имеет смысл разобрать сортировки по классам сложности/

Уровень сложности O(N*N) = Вставкой, Выбором
Уровень сложности O(N*log(N)) = Быстрая, Слиянием, Пирамидальная
Уровень сложности O(N) = Подсчетом, Поразрядная

*Пирамидальная требует знаний по динамическим структурам данных
===============================

  • Отсортируйте массив и Выполните логарифмический поиск внутри массива для определения наличия и позиции числа, введенного пользователем
  • Отсортируйте массив и Выполните бинарный поиск внутри массива для определения наличия и позиции числа, введенного пользователем
  • Выполните сортировку массива следующим образом. Все числа меньшие первого должны предшествовать этому первому числу, а все большие него идти за ним
  • Создайте массив, количество элементов которого задается во время работы программы, и заполните его любыми значениями. Нужно добавить к этому массиву дополнительной памяти и дописать туда новые значения не затирая основного массива. Проверьте работоспособность с помощью цикла (например внутри цикла 1000 раз должно произойти такое дополнение памяти)
  • Задан массив из множества случайных элементов.
    Ваша задача Посчитать количество участков на которых элементы массива возрастают и посчитать количесвто участков, на которых элементы массива убывают
  • Ваша задача Посчитать в массиве серию самых больших, стоящих подряд четных элементов
  • Задан массив, количество элементов которого задано константой. const int N = 100 элементов.
    Ваша задача Сжать массив, удалив все нули
  • Задан массив. После запуска программы пользователь вводит число.
    Ваша задача Найти число, которое ближе всех к указанному числу (ответ может состоять из двух чисел - и +)
  • Ваша задача Найти среднее арифметическое всех элементов массива. Найти элемент массива, который ближе всех к найденному значению и сжать массив, удалив все такие значения
  • .

  • Задан массив из положительных и отрицательных элементов.
    Ваша задача Сжать массив, убрав из него последнюю группу значений, которая представляет собой знакочередующийся ряд
  • Задан массив из N элементов
    Ваша задача Создать одно число из этих элементов массива
  • В одномерном массиве из 100 элементов имеются нули.
    Ваша задача На каждом четном диапазоне [0..0] (диапазон начинается нулем и заканчивается нулем или последним элементом массива) заменить элементы на девятки

       Например:    0  3  9  0  1  8  1  4  9  7  6  0  1  3 ---> 0  3  9  0  9  9  9  9  9  9  9  0  1  3
  • Задан массив из N вещественных значений.
    Ваша задача Найти сумму только тех значений, которые являются дробными
  • Задано три массива (M1,M2,M3) Во всех массивах есть как минимум одно общее число.
    Ваша задача Найти первое общее число (например во всех трех массивах встречается общее число 5)
  • Задан массив, который содержит несколько простых чисел
    Ваша задача создать новый массив из исходного. В новый массив должны быть записаны номера индексов, в которых лежат простые числа
Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

4 комментария: С++ Упражнения Одномерные массивы

  • павпв говорит:

    вы бы хоть ответы где нибудь написали как мудак 5 часов уже сижу мужусь некуя не получается и посмотреть не где…..




    0



    0
    • admin говорит:

      Никто не запрещал спрашивать непонятное.
      Я не выкладываю ответы по 3 причинам:
      1) Я не решал все эти задачи.
      2) Я некоторые из задач (из всех задач сайта) решить пока еще не способен (наверное).
      3) Только когда мучаешь мозг, ум потихоньку начинает работать.
      _____________________________

      Если какие-то вопросы по задачам с сайта есть, то не бойтесь спросить. Если есть C++ код, то вообще хорошо, моно его показать будет и я подскажу советом, если сам врублюсь. (только не так быстро, как на форумах)

      Если какие-то вопросы не по задачам с сайта, то тем, кому просто нужно, чтобы я сделал — тем я делать не буду.
      ___________________
      павпв вы бы хоть задачу сказали, которая загнала вас в тупик.




      0



      0
  • Vladimir говорит:

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




    0



    0

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Случайная книга в электронном формате

Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

В зоопаpке pебенок, возбужденно тыча пальцем на клетку с пpиматами, кpичит: - Мама ! Мама ! Смотpи - пpогpаммисты ! - Почему ты так pешил ? - Они как папа ! - не мытые, лохматые и мозоли на попе !!

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок