Практика. Часть №1

  Юрий  | 

  Обновл. 6 Сен 2019  | 

 9287

 ǀ   49 

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

Задание №1

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

AABBBAA
3&&3
yyyyymmmmmmmmyyyyy
hhhhhhhhmhhhhhhhh

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

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

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

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

Примеры

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

Примечание

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

Задание №2


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

Задание №3

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

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

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


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

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

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

  1. Аватар armus1:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. Аватар Марк:

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

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

  6. Аватар Saliwer:

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

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

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

    Задание №3

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

    Задание №2

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

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

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

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

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

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

    Задание №1

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

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

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

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

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

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

  10. Аватар Кекс:

  11. Аватар Shom:

  12. Аватар Shom:

    Задание №2.

  13. Аватар Shom:

  14. Аватар Михаил:

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

    1. Аватар Лев:

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

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

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

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

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

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

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

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

    Задание 1:

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

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

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

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

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

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

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

    Прорамма 1:

    Программа 2:

    Как-то так…

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

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

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

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

    Задание 3:

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

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

  19. Аватар Роман:

    Задание №3

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

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

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

  20. Аватар Роман:

    Задание №2

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

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

      1. Аватар Роман:

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

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

          Спасибо 🙂

  21. Аватар Роман:

    Задание №1

    1. Аватар макс:

      что делают строки с 10 по 22. Че то не понял для чего это

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

    Задание 2:

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

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

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

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

  23. Аватар Кирилл:

    Задание №1

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

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

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

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