Часть №1: Практические задания по С++

  Юрий  | 

  Обновл. 16 Сен 2021  | 

 138596

 ǀ   124 

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

Задание №1

Сэндвич с мороженым — это строка, образованная двумя одинаковыми концами и разной серединой. Например:

AABBBAA
3&&3
yyyyymmmmmmmmyyyyy
hhhhhhhhmhhhhhhhh

Обратите внимание, что левый и правый концы сэндвича идентичны как по длине, так и по повторяющимся символам. Середину составляет третий (отличный от первых двух) набор символов.

Следующее не является сэндвичем с мороженным:

BBBBB // вы не можете иметь только мороженное (без сэндвича)
AAACCCAA // вы не можете иметь неравные по длине окончания в сэндвиче
AACDCAA // вы не можете иметь начинку из разных символов
A // ваш сэндвич не может быть менее трех символов

Напишите программу, которая возвращает true, если строка, введенная пользователем, является сэндвичем с мороженым, и false — в противном случае.

Примеры:

isIcecreamSandwich ("CDC") ➞ true
isIcecreamSandwich ("AAABB") ➞ false
isIcecreamSandwich ("AA") ➞ false

Примечание: Сэндвич с мороженым должен иметь минимальную длину 3 символа, и как минимум 2 из этих символов должны быть различны.

Задание №2


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

Задание №3

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

Пример результата выполнения программы:

Введите номер месяца (число от 1 до 12): 12
Зима


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

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

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

  1. Юрий:

    Задача №2

  2. Sergei:

    Задание № 2

  3. Олег:

    1 задание:

  4. Сергей:

    Первое задание:

  5. Елизавета:

    Первое задание решила так:

    Со вторым заданием не справилась.

    Третье задание:

    1. Виталий:

      В задании, где нужно вывести сезон, в зависимости от номера месяца, при введении чисел 0 и отрицательных, у Вас будет отображаться «Winter»

      Строку

      нужно, как вариант, изменить на

    2. Sergei:

      Первое задание:

    3. Sergei:

      В первом задании у тебя, например, 1ФФролрлоропаравд1 является сэндвичем.

      Т.е. ты сравниваешь нулевой и последний символы, а также 1-й и 2-й. И всё.

      Ниже я привёл свой вариант решения.

  6. Konstantin:

    Так я решил 1-е задание:

    Так я решил 2-е задание:

    Так я решил 3-е задание:

  7. Arsen:

    2:

     

    1. Александр:

      Не совсем удачное использование «if» в 13-й строке. Если повторно ввести отрицательное значение, оно запишется в массив. Было бы неплохо заменить «if» на «while».

  8. Arsen:

    Легчайший вариант решения 3 задачи:

     

  9. Сергей:

    Задание №1 (только сама функция)

  10. Александр:

    1. Александр:

      Или такой вариант:

  11. Александр:

  12. Do:

    Задание №1

  13. Александр:

    Задание №2

  14. Виталий:

    Задание 2. Решить для любого количества чисел не смог, пока так. Для вывода минимального числа использовал костыль с многократным повтором min();

  15. Артём:

    Моё решение первого задания:

  16. Егор:

    Решение 1 задания

  17. Ярик:

    Задание №1
    Прошу критики пожалуйста)

    1. KILYAV:

      Используй string и встроенные функции, пример:

    2. Влад:

      У Вас ошибка, символы справа не сравниваются на одинаковость, как символы слева. например у Вас выражение SSSSMSSMS будет считаться сендвичем.

  18. Ironsaid:

    задание 1 Сэндвич с мороженым

  19. Og:

    Задание №1

  20. Alexjazz:

    задание 1 Сэндвич с мороженым

    у меня одного ощущение что основная масса решений неправильно отрабатывает условия задания —
    — fffGGfff -ЭТО СЭНДВИЧ
    DDFFGGGFFDD — ЭТО не сэндвич

  21. SirAyane:

    Задача 1

    1. SirAyane:

  22. Юрий:

    Задание №1

    1. SirAyane:

      Ваша программа не работает.
      ABCBA возвращает true, а должно false (двойная начинка).

  23. Ярослав:

    Задание 3:

  24. Ярослав:

    Задание №2

  25. Neter:

    1 задание. Только чесно, насколько оно мною усложнено? Увидел решение из реверсом строки и теперь чуствую себя ничтожеством

  26. Hapooga:

    2) Задание

  27. Hapooga:

    3) Задание

  28. Hapooga:

    1) Задание

    приятнее выглядит с тернарным

  29. Кирилл:

    Задание №2

  30. Nana:

    Задание 3:

  31. WAR:

    Задание №3:

  32. Нина:

    Задача 1
    (Может я чего -то не поняла в постановке задачи……Но у меня все просто…..

  33. WAR:

    Задание №2:

  34. WAR:

    Задание №1:

  35. Жанна:

    первое задание:

  36. Мирель:

    Задание 1

    1. Ashot:

      У вас получается, что сендвич может бъть не только 3 слойний, но и много (нечетного количества). Допускается?

  37. Николай:

    Первая задачка.

  38. Dimon:

    Первая задачка

  39. Евгений:

    Задача №1

  40. Игорь:

    Задачка №1

    1. Константин:

      Игорь(клешниВверх), ты в своём коде запускал такой вариант сэндвича: cvcvc?

  41. Ruslan:

    Задание №3

  42. Rock:

    Задача 1:

    Задача 2:

    Задача 3:

  43. ntaklive:

    Наверное, самое легкое решение первой задачи):

  44. Fred:

    Задание №3

  45. Славик:

    Задание №3

  46. Тимур:

  47. NullPtrException:

    Первое.

  48. Виталий:

    Вроде работает =)
    Задание №1

  49. Юшка:

    Задание №3

  50. Юшка:

    задание №1

  51. Денис:

    Задание №1 — вариант реализации, использующий теорию формальных языков

  52. Muhammad:

  53. Владимир:

    Задание 3
    Не разобрался только почему || — не работало (

    1. Шилов:

      Спасибо за использование switch 😀

  54. Максим:

    1е Задание

  55. Марат:

    Первое задание!

  56. Kris:

    Сэндвич:

  57. Андрей:

    Мое решение Задания № 1.

  58. way:

  59. Алена:

    Задача 3.

  60. Алена:

    Задача 2.

  61. Алена:

    Задача 1.

  62. Алексей:

    Мой вариант задания 3

  63. Алексей:

    Мое решение Задачи №2

  64. armus1:

    Решение задачи №3:

  65. Анастасия:

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

  66. Анастасия:

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

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

      На самом деле вектор тут совершенно не нужен, нам ведь не нужно хранить эту последовательность, а только проверять числа и сравнивать с минимумом.

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

        Строки кода 6, 12 и 29 — лишние.

    2. Владимир:

      А зачем в конце цикла оператор continue, если его задача перенести выполнение программы в конец тела while, а он сам там находится?

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

        да, пожалуй, он здесь лишний. Видимо у меня и после него сначала что-то было, а потом остался только он.

  67. Анастасия:

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

  68. Марк:

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

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

  69. Saliwer:

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

      Аналогично. AABBABBAA — концы одинаковые, символов всего два. Но начинка не однородна. Или мороженое не однородно, короче говоря, насколько я поняла условие, эта строка не сэндвич, но у Вас она будет сэндвичем.

  70. Владимир:

    Задание №3

  71. Владимир:

    Задание №2

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

      Не совсем понятно, как из

      следует, что little получает значение первого положительного числа, ведь этот else противопоставляется условию, что число нулевое, то есть это присваивание little = number будет выполняться для каждого ненулевого числа, что неправильно. Код не запускала, вполне возможно, что я что-то не увидела и он работает корректно, в любом случае прошу пояснить.

      1. Владимир:

        Упс, точно Вы заметили.
        Вот так, наверно будет правильно:

  72. Владимир:

    Задание №1

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

      Аналогично. AABBABBAA — концы одинаковые, символов всего два. Но начинка не однородна. Или мороженое не однородно, короче говоря, насколько я поняла условие, эта строка не сэндвич, но у Вас она будет сэндвичем.

      1. Владимир:

        Анастасия, а Вы пробовали этот код запустить? Вот когда я проверяю на отладке Вашу тестовую строку AABBABBAA, то у меня программа выдает: "Ваше предложение не является сэндвичем"

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

          Я попробовала запустить, но у меня компилятор ругается на все ваши size(sandwich), заменила на привычные sandwich.size(). Да, у Вас AABBABBAA не является сэндвичем, я поняла. Сбил с толку Ваш комментарий if (characters == 2) // если имеем два разных символа в сэндвиче
          На самом деле Ваш идентификатор characters означает, что символы в строке менялись как минимум дважды. То есть для AAABBBCCC characters тоже будет 2. А для моей строки AABBABBAA characters = 4.

  73. Кекс:

  74. Shom:

  75. Shom:

    Задание №2.

  76. Shom:

  77. Михаил:

    может кто нибудь сказать, является ли такой способ правильным, и почему в первом if у меня не выводит текст "error" когда ввожу значения меньше нуля и больше 12

    1. Лев:

      У тебя в условии первого if стоит & ("И") между условиями, а должно быть || ("ИЛИ"), так как номер месяца не может быть одновременно меньше 1 и больше 12.

    2. Илья:

      У тебя в условии стоит мало того что 'И' (число одновременно должно быть и меньше 1 и больше 12),так он у тебя ещё и побитовый

  78. Илья:

    1. Илья:

      Заданае 1,обновление программы,версия 1.1

      Добавлена функция проверки смены символов checkSwitches(std::string &word)
      Она бракует строки типа "ABABA"(многослойные сэндвичи)

  79. Илья:

    Задание 1:

    1. Владимир:

      А зачем в перегрузке оператора прописывать friend, если тело метода находится внутри класса?

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

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

  80. Илья:

    Задание 2:
    2 экземпляра программы:
    В первой мы просим ввести пользователя количество чисел,которое он впоследствии введёт.

    Во второй мы динамически отслеживаем каждое введённое пользователем число,постоянно ища самое маленькое,программа завершается,если пользователь введёт '0':

    Прорамма 1:

    Программа 2:

    Как-то так…

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

      Во втором цикле у Вас в каждом условии повторяется строчка

      это не наводит на мысли вытащить её за условия, в блок цикла? И в целом не очень здорово повторять почти одно и то же сначала для первого числа, а потом для остальных. Лучше сделать один код и проверять, каким по счёту вводится число. Это и по первой, и по второй версии.

  81. Евгений Павлов:

    Задание 3:

    1. Владимир:

      Евгений, очень классно сделали решение, прям получил удовольствие от прочтения. Возьму себе кое-что на заметку

  82. Роман:

    Задание №3

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

      Здравствуйте. У меня Ваш код не компилируется, ругается даже на универсальную инициализацию. Поясните, пожалуйста, как работает

      и почему потом по номеру месяца season[month] показывает правильный сезон, ведь, например, 6-ому месяцу в Вашем мэппинге будет соответствовать {5,"Весна"}, если считать от нулевого {12,"Зима"} разве нет? А 12-ый месяц так и вовсе будет с ошибкой, так как он стоит на нулевом месте. Поясните, пожалуйста, где я ошибаюсь.

  83. Роман:

    Задание №2

    1. Евгений Павлов:

      Код подозрительно похож на мой)

      1. Роман:

        Немного похож). Проверка в потоке на '\n' — хорошая идея!

        1. Евгений Павлов:

          Спасибо 🙂

  84. Роман:

    Задание №1

  85. Евгений Павлов:

    Задание 2:

    1. Евгений Павлов:

      О черт, забыл прописать cin.ignore(); в начале цикла

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

      Вы используете какие-то незнакомые мне пока вещи;
      inputData.clear(); — то есть если хоть одно число неправильное, чистим всё? Или как это работает?
      answer = toupper(answer); — что за тупер?
      cin.peek() — последний введённый символ?

  86. Кирилл:

    Задание №1

    1. Владимир:

      Кирилл, у Вас оптимальная, на мой взгляд, получилась реализация, от меня респект

      1. Алексей:

Добавить комментарий для Анастасия Отменить ответ

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