C++ для начинающих. Строки. Заданные предложения в случайном порядке

Работу со строками можно рассматривать очень долго и можно находить бесконечное множество тем, которые помогут вам построить фундамент ваших знаний. Одна из наиболее часто встречающихся задач при решении учебных задач — это генерация случайных значений. Среди задач по генерации случайных последовательностей встречаются разнообразные задачи, одна из которых генерация уникальных элементов.

  • Задача
    Задан набор предложений. Изначально предложения расположены в определенном порядке. Нужно поменять порядок предложений и вывести их на экран.

В примере, который я показываю, была попытка сделать быстрое перемешивание заданных предложений. Максимальной скорости генерации я, разумеется, не получил. Но я не могу сказать, что эта реализация выполняется долго.

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

Пример хода мыслей для решения задачи по перемешиванию заданных предложений.

  • Предложения нужно в чем-то хранить
  • К каждому предложению можно относится как чему-то одному целому, значит к предложению можно относиться как к строке. Одно предложение = одна строка
  • Множество строк = множество однотипных элементов, значит для хранения подойдет массив строк. (Массив строк будет массивом предложений)
  • Для решения задачи можно создавать новый массив, но это дополнительные расходы ресурсов ПК. Если будет 100.000 предложений, то дополнительный массив на 100.000 элементов как-то не впечатляет
  • Так как идея со стройкой нового массива не подходит, остается выполнять перестановку самих элементов внутри массива.
  • Чтобы переставлять элементы массива можно выбирать случайный элемент и менять его с текущим внутри цикла прохода по массиву.
  • Мы меняем два элемента и хотим растасовать массив как колоду карт, значит можно выбирать два случайных значения. Эти значения сделать индексами массива и менять их местами. Таким образом Если выбирать два элемента, то цикл прохода по массиву можно сократить вдвое

Мысли должны строиться подобным образом, но с логикой сильнее чем моя в разы. Все-таки я программист дохлый. После понимания того как строить исходный код, смотрим на сам код.

  • Borland C++ 3.1 Генерация уникальных предложений

Таким образом можно перемешивать предложения, сохраняя их уникальность. Могу заметить, что при больших массивах можно уменьшить время выполнения, если проходить не по 1/2, а например по 1/3 или 1/4 массива. Но само перемешивание так будет более слабым.

Буду надеяться, что эта статья помогла что-то понять и чему-то вас научила.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

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

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

Поиск

 
     

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

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

sanya: а я фортран знаю flamekeeper: настолько ли глубоко? sanya: глубоко. узнал после того как в универе препода на$$$ послал. каждый день программы писал на фортане в наказание sanya: только сейчас понимаю, что сделал это не зря)

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

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