Практика в С++. Часть №15

  Юрий  | 

  Обновл. 12 Янв 2020  | 

 3139

 ǀ   28 

Здесь размещены задания по С++, которые вы можете выполнить. Каждое задание имеет свой уровень сложности, готовых ответов не будет, поэтому welcome в комментарии.

Easy: Задание №1

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

Medium: Задание №2


Остров Манхэттен был приобретён поселенцами за $24 в 1826 г. Каково было бы в настоящее время состояние их счёта, если бы эти 24 доллара были помещены тогда в банк под 6% годового дохода?

Hard: Задание №3

Возьмите любое слово, например, «корова». Используя генерацию случайных чисел, переставьте буквы этого слова в рандомном порядке. Делайте это до тех пор, пока полученное слово не совпадёт с начальным словом. Используя массив, укажите при перестановке букв их индексы. Программа должна корректно работать с любым словом.

Пример выполнения программы:

Введите слово: корова
[0] 435021 воакро       [1] 430215 вокроа      [2] 521340 ароовк
[3] 025134 краоов       [4] 104532 окваор      [5] 024531 крваоо
[6] 214305 ровока       [7] 152034 оарков      [8] 130542 оокавр
[9] 031524 кооарв      [10] 503421 аковро     [11] 310425 ооквра
[12] 412035 воркоа     [13] 140532 овкаор     [14] 402513 вкраоо
[15] 124530 орваок     [16] 452130 вароок     [17] 423105 вроока
[18] 134520 ооварк     [19] 104352 оквоар     [20] 302415 окрвоа
[21] 203541 ркоаво     [22] 231504 рооакв     [23] 023541 кроаво
[24] 504132 аквоор     [25] 423015 врокоа     [26] 514320 аоворк
[27] 012345 корова


Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (4 оценок, среднее: 5,00 из 5)
Загрузка...

Комментариев: 28

  1. Аватар Анастасия:

    Моё решение задания №3:

  2. Аватар Анастасия:

    Моё решение задания №2:

  3. Аватар Анастасия:

    Моё решение задания №1:

  4. Аватар Марат:

    Задание №3

    1. Аватар Анастасия:

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

  5. Аватар Shom:

    Задание №3

    1. Аватар Марат:

      Ваш вариант мне понравился!

    2. Аватар Анастасия:

      А мне это решение показалось сложным.
      В частности, в функции mixing() не хватило комментария, что же всё-таки проверяет key. И следующий вложенный цикл тоже я не поняла:

      почему jjj ограничен iii и зачем сравнивать индексы?

      1. Аватар Shom:

        key становится true если данную букву мы уже раньше переставили (буквы проверяются по индексу — местоположению в слове, так как в слове может встречаться несколько одинаковых букв), key == true прерывает текущую итерацию и не даёт счётчику букв (iii) увеличиться на единицу, то-есть, следующая итерация будет подбирать букву для того-же индекса (местоположения в слове).
        jjj ограничен iii так как iii представляет собой длину уже набранной части "перемешанного слова", а цикл с jjj проверяет совпадение только-что сгенерированного числа (ограниченного длиной заданного слова) с использованными индексами букв заданного слова.

  6. Аватар Shom:

    Задание №2.

  7. Аватар Shom:

  8. Аватар Владимир:

    1. Аватар Анастасия:

      Владимир, в Вашей программе есть один существенный недочёт:

      Во-первых, индексы могут и не совпадать, главное чтобы совпадали буквы! В том же слове "корова" начальные индексы 012345 не совпадут с 032145, но слово совпадёт.
      Во-вторых, зачем считать количество несовпадений индексов, когда важен сам факт, есть они или нет. То есть выходить из цикла можно при первом же несовпадении.

      Ну, и ещё один момент. У вас целый ряд одинаковых циклов for, почему бы и не использовать для каждого одну и ту же переменную i, ведь она создаётся и живёт только в одном цикле, не влияя на другие, можно было не придумывать все эти j, k, q, t…

  9. Аватар Алена:

    Задача 2.

    1. Аватар Анастасия:

      Тогда уж нужно просить ввести текущий год. Или в предыстории писать, что программа вычисляет состояние счёта на заданный год, а не на настоящий момент.
      sumAayment — странноватое название переменной.

  10. Аватар Алена:

    Задача 1.

  11. Аватар Владимир:

    Задание №2

    1. Аватар Анастасия:

      По ряду причин не рекомендуется использовать #define для констант, в частности:
      1) при этом не учитывается тип константы, что может привести к ошибкам сужения типов, например.
      2) такие константы не отслеживаются при отладке.

  12. Аватар Владимир:

    Задание №1

  13. Аватар Юлия:

    №3

    1. Аватар Юлия:

      Извините, не дочитала 3-е задание до конца. Вместо индексов у меня выводит перемешанное слово.

    2. Аватар Анастасия:

      Зачем писать свою функцию get_s (), да ещё и такую вычурную, с непонятными переменными-символами, если есть прекрасная std::getline(std::cin, строковая переменная), которая для этого и существует?

  14. Аватар Юлия:

    №2

    1. Аватар Анастасия:

      слишком много магических чисел. И почему у Вас 364 дня в году?

  15. Аватар Юлия:

    №1

    1. Аватар Анастасия:

      Сама функция подсчёта символов в строке — простая и понятная, ей бы и можно было ограничено, что это за действия в get_s — большой вопрос… Зачем так сложно?

  16. Аватар Илья:

    Задание 2:

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

Ваш E-mail не будет опубликован. Обязательные поля помечены *