Запрашивает с клавиатуры три целых числа и выводит на экран сумму данных чисел
Например, если было введено 349, программа должна вывести на экран число 16, так как 3 + 4 + 9 = 16.
Как извлечь отдельные цифры из числа? Если число разделить нацело на десять, в остатке будет последняя цифра этого числа. Например, если 349 разделить нацело на 10, то получится частное 34 и остаток 9. Если потом 34 разделить также, получится частное 3 и остаток 4; далее при делении 3 на 10 получим частное 0 и остаток 3.
В языках программирования почти всегда есть две операции:
1) нахождение целого при делении нацело,
2) нахождение остатка при делении нацело.
В языке программирования Python первая операция обозначается // (двумя знаками деления), а вторая - % (знаком процента). Например:
Примечание. Операции деления нацело и нахождения остатка с точки зрения арифметики применимы только к целым числам. Но в Python их можно использовать и по отношению к дробным числам:
Алгоритм нахождения суммы цифр трехзначного числа abc (где a - сотни, b - десятки и c - единицы) можно описать так:
- Найти остаток от деления abc на 10, записать его в переменную d1 . Это будет цифра c.
- Избавиться от цифры c в числе abc, разделив его нацело на 10.
- Найти остаток от деления ab на 10, записать его в переменную d2 . Это будет цифра b.
- Избавиться от цифры b в числе ab, разделив его нацело на 10.
- Число a однозначное. Это еще одна цифра исходного числа.
- Сложить оставшееся число a со значениями переменных d1 и d2 .
Пример выполнения программы:
Однако, если нам известно, что число состоит из трех разрядов (цифр), есть немного другой способ извлечения цифр из числа:
- Остаток от деления на 10 исходного числа дает последнюю цифру числа.
- Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее следует разделить полученное двухзначное число нацело на 10, и у нас окажется вторая цифра числа.
- Если исходное трехзначное число разделить нацело на 100, то получится первая цифра числа.
В Python данную задачу можно решить без использования арифметических действий, а путем извлечения из исходной строки отдельных символов с последующим их преобразованием к целому.
Задача может быть усложнена тем, что число вводится не пользователем с клавиатуры, а должно быть сгенерировано случайно. Причем обязательно трехзначное число.
В этом случае надо воспользоваться функциями randint() , randrange() или random() из модуля random . Первым двум функциям передаются диапазоны: randint(100, 999) , randrange(100, 1000) . Получить трехзначное число, используя random() немного сложнее:
На этом занятии мы научимся читать, писать и считать (в целых числах). Как первоклассники, только на компьютере, с помощью С++.
Домашнее задание:
Обязательное задание:
1) Выполнить все задания из турнира "02. Целые числа - 1" (Если есть не выполненные) (http://contester.petrocollege.ru:8888/ru/)
2) Выполнить все задания из турнира "03. Целые числа - 2"
3) Выполнить задания из турнира "04. Целые числа - 3"
1. Арифметические выражения
Сначала научимся считать. Мы уже знаем, что выводить строки можно с помощью команды cout. Точно так же можно выводить числа и результат вычисления выражений. Например, вот так выглядит программа, которая считает, чему равно (2 + 3) * 5:
Если запустить эту программу, то она выведет 25. Сначала посчитается результат вычисления арифметического выражения, а затем он будет выведен. Посмотрим, какие арифметические операции умеет выполнять C++:
У операций на C++ тот же приоритет, что и в обычной математике. Сначала выполняются унарные операции (увеличить на 1 и уменьшить на 1), потом бинарные умножение, деление и вычисление остатка, затем бинарные сложение и вычитание. Влиять на порядок операций можно с помощью скобок. Минус и плюс бывают бинарные (это число минус число или число плюс число) и унарные (это просто отрицательное или положительное число). Например, можно написать (−2 + 3) * 4 — это будет корректным выражением с результатом 4.
Гораздо интереснее операции деления и взятия остатка. С помощью операции деления можно узнать целую часть от деления одного числа на другое. Например, 7 / 3 будет равно 2. А с помощью операции взятия остатка от деления можно узнать остаток от деления первого числа на второе. 7 % 3 будет равен 1. Если число делится нацело, то остаток будет равен нулю, например, 8 % 4 даст 0.
Математикам стоит обратить внимание на то, что деление и подсчёт остатка для отрицательных чисел работает в C++ «неправильно». Если в C++ мы разделим отрицательное число на положительное, например, посчитаем результат операции −7 / 3, то получим −2. Фактически в C++ отрицательное число берётся по модулю, делится, а затем к результату приписывается минус.
В C++ операция взятия остатка от деления отрицательного числа на положительное, так же как и деление нацело, берёт делимое по модулю, затем происходит подсчёт остатка от деления, и к результату приписывается минус. Например, −10 % 3 будет равно −1.
При возведении в степень целых чисел (если значение степени не большое, например в квадрат или в куб) следует использовать умножение, например:- a 2 = a ∗ a
- a 3 = a ∗ a ∗ a
- ( a + b ) 4 = ( a + b ) ∗ ( a + b ) ∗ ( a + b ) ∗ ( a + b )
Программа, которая всегда считает результат вычисления одного и того же выражения, довольно скучная и бестолковая. Полезная программа должна оперировать с различными данными без внесения изменений в код.
Можно представить себе, что программа сидит в кабинете, в который входит конвейер с входными значениями (это поток cin), а выходит конвейер с выводом (это поток cout). В кабинете стоят коробки с хламом, оставшемся от предыдущих жильцов, но мы можем ими воспользоваться, чтобы хранить в этих коробках свои вещи. Переменная, по сути, и является такой коробкой. «Объявить переменную x» — это как взять какую-нибудь из коробочек и подписать её буквой x. «Присвоить значение переменной x» — это вытряхнуть содержимое из коробочки x и положить в неё новое значение.
Пока мы будем работать только с целочисленными переменными. Пусть мы хотим взять из горы неподписанных специальных коробочек для целых чисел две штуки и назвать их x и y. На языке C++ это будет записано как:
Слово int означает, что переменные будут целочисленные, затем перечисляются имена создаваемых переменных через запятую. В конце ставится точка с запятой.
Если мы хотим присвоить значение переменной, то слева следует написать имя присваиваемой переменной, затем знак равно, а справа — арифметическое выражение, в котором могут использоваться числа и другие переменные. Например:
В результате выполнения этих операций в переменной x окажется число 5, а в переменной y — число 20.
Переменные также можно считывать с клавиатуры. Для этого по аналогии с потоком вывода cout используется поток cin (console input). Этот как раз тот конвейер, по которому к нам приезжают числа. Как и в случае cout, вводимые значения разделяются стрелочками, только теперь они направлены вправо, так как мы забираем данные из потока cin.
Задача 1. Ввести одно число и вывести это число, увеличенное на 1.
Добавим строчки ввода и вывода данных. Данная программа при запуске откроет консоль и будет ожидать, пока пользователь не наберёт целое число. После нажатия клавиши Enter число будет размещено в переменной a. Далее оно увеличится на единицу и будет выведено обратно на консоль:
Обратите внимание, что при чтении из cin стрелочки направлены в противоположную по сравнению с cout сторону. Мы «забираем» данные из потока ввода cin и «кладём» в cout .
Задача 2. Ввести с клавиатуры два числа и вывести их сумму.
Рассмотрим теперь пример программы, которая считывает с клавиатуры два числа a и b и выводит на экран их сумму:
Данная программа при запуске откроет консоль и будет ожидать, пока пользователь не наберёт два целых числа, разделённых пробелом или переводом строки (нажатием Enter). После нажатия клавиши Enter первое число будет размещено в переменной a , а второе число - в переменной b . Далее будет выведена на консоль сумма этих двух чисел.
Обратите внимание, что если мы хотим считать несколько переменных, то при перечислении их следует разделять стрелочками. Строку
можно заменить строками
которые будут делать то же самое.
Задача 3. Ввести с клавиатуры три числа и вывести суммы первого и второго чисел, первого и третьего, второго и третьего, сумму всех трех чисел и их произведение.
Следующая программа запрашивает три целых числа a , b, c . Программа в первой строке выводит сумму a +b , во второй строке a +c , в третьей строке b +c , в четвёртой, через пробел сумму всех трёх переменных и их произведение:
В C++ на целые числа типа int отводится 4 байта (32 бита). А это значит, что различных целых чисел может быть только 2 32 . Числа могут принимать значения от −2 31 до 2 31 −1 (это примерно от минус двух миллиардов до двух миллиардов). Если в процессе вычислений произойдёт выход за эти пределы, то результат будет посчитан неверно. Использование принципиально больших чисел требует ухищрений, поэтому в наших задачах все числа и все правильные промежуточные вычисления не будут выходить за эти пределы.
3. Изощрённый вывод
В cout также можно класть несколько значений, причём числа и строки могут идти вперемешку. Рассмотрим это на примере.
Задача 4. Ввести два числа и вывести их сумму и разность в виде арифметических выражений.
Пусть нам нужно считать два числа и вывести их сумму и разность в виде арифметического выражения, каждое в отдельной строке. Решение этой задачи выглядит так:
Если ввести числа 1 и 2, то на экран будет выведено:
1 + 2 = 3 1 - 2 = -1
Все различные значения, которые мы хотим вывести с помощью cout, следует разделять стрелочками <<. На место переменных и арифметических выражений будет подставлено их значение, а всё, что выводится в кавычках, останется без изменения. Особого внимания заслуживает слово endl — так в C++ делается переход на новую строку.
Если вы выводите несколько чисел, то обязательно добавляйте между ними пробел, иначе они склеятся и ответ будет неправильным.
Задача 5. Предположим, пассажир самолёта перепутал дверь туалета с выходом и случайно вышел на высоте. Приземлился он через t секунд, и нужно определить, на какой высоте летел самолёт.
Эту задачу можно решать так, как обычно решаются задачи по физике. Ускорение свободного падения нам известно (поскольку наши числа целые, то мы возьмём его равным 10). Мы посчитаем скорость (v), на которой пассажир достиг земли, затем среднюю скорость (vm, это конечная скорость, поделенная на 2) и, зная среднюю скорость и время, легко рассчитаем расстояние.
В этом решении мы заводили переменные там, где они нам понадобились впервые, а также сразу клали в переменную заданное число при её создании.
Задача 6. Написать программу, которая запрашивает шестиразрядное число и выводит только его три старших разряда.
Рассмотрим упрощенный вариант задачи: Вводится двузначное число. Вывести его старший разряд. Например, вводим число 49. Тогда старший разряд - это 4. Как его определить? В двузначном числе старший разряд - это разряд десятков, и для того, чтобы его найти, достаточно разделить исходное число на 10 (с учетом, что у нас есть операция целочисленного деления /). 49 / 10 = 4, что и требовалось получить. Если вводится трехзначное число и нужно получить два старших разряда, то разделив его снова на 10, мы как раз и получим уже два разряда. Например, вводим 395, делим на 10: 395 / 10 = 39, получаем два старших разряда. В нашем задании вводится шестизначное число, требуется получить три старших разряда. Тогда по аналогии: 123456 / 1000 = 123 Задача 7. Д аны два числа a и b , причём b > 0 . Надо посчитать целую часть от деления a на b , округлённую вверх.Рассмотрим, как решить совсем простую на первый взгляд задачу, которая превращается в достаточно сложную из-за того, что мы мало что умеем и знаем. Напомню, что при делении C++ округляет результат вниз, не так, как нам нужно.
Первая идея — разделить с округлением вниз и прибавить к результату единицу. Эта идея неправильная: она не работает, если одно число делится на другое нацело. Так 8 / 2 + 1 будет равно 5, хотя правильный ответ 4.
Следующая идея, правильная, — прибавить к числу что-нибудь и затем разделить его с округлением вниз. Осталось понять, что же нужно прибавлять к числу. Если число a делится на b нацело, то результат не должен изменяться, значит, нельзя прибавлять к числу a что-либо большее b − 1 (если прибавить больше, то результат деления получится уже больше правильного). Можно ли прибавить что-нибудь меньшее b − 1? Рассмотрим «худший» случай, когда остаток от деления a на b равен единице, например, a = 11, b = 5. Тогда мы сложим a и b − 1 (получим 15) и разделим на 5 — получится правильный ответ 3.
Наше решение будет работать и для отрицательных чисел за счёт особенностей деления на C++. Полный код решения выглядит так:
6. Как решать задачи в проверочной системе Contester
У каждой задачи в вашем домашнем задании в системе проверки Contester есть условие, формат входных и выходных данных и примеры. В условии содержится описание задачи, которую нужно решить. В формате входных данных сказано, какие числа вводятся и в каком порядке они даны, а также указаны ограничения на эти числа. Гарантируется, что чисел будет столько, сколько нужно, и они будут удовлетворять ограничениям. Вам нужно решить задачу только для указанных ограничений. Как программа будет работать для чисел, не удовлетворяющих ограничениям — абсолютно неважно, таких тестов не будет. В формате выходных данных указывается, что и в каком порядке программа должна выводить — ничего, кроме этого, в решении быть не должно.
Примеры к задаче нужны для лучшего понимания условия и первоначальной самопроверки. Естественно, программа должна работать не только на примерах, но и на любых других допустимых входных данных.
Если программа работает правильно, то она получит статус OK. Если программа получила другой статус — вам следует придумать тесты, удовлетворяющие ограничениям, и проверить работу своей программы. Обязательно найдётся ошибка. Наша тестирующая система работает правильно. Наши тесты правильные. Правильные ответы к нашим тестам правильные. Это точно. Мы проверяли много раз. И не только мы.
7. Правила оформления кода
Программы нужно писать красиво, иначе их будет неудобно читать. На реальной работе программы много раз читаются и переписываются другими людьми, поэтому соблюдать правила оформления кода очень важно. Если в общем, то главное правило — «делайте как в образце». Если конкретно:
1. После открывающейся фигурной скобки добавляется отступ в начале строки, на строке с закрывающейся фигурной скобкой отступ убирается.
2. Все бинарные операции (+,−, *, /, %, =, <<, >>) окружаются пробелами.
3. После унарного минуса пробел не ставится (−5 нужно писать слитно).
4. Перед знаками препинания (запятая и точка с запятой) пробел не ставится, после — ставится.
5. После открывающейся и перед закрывающейся круглой скобкой пробел не ставится.
6. Если в условии задачи сказано «на вход даются два числа A и B», то переменные, в которые считываются эти числа, должны называться так же, но маленькими буквами (a и b соответственно).
Ваши коллеги будут очень благодарны вам, если вы будете соблюдать правила оформления кода.
Введение
При изучении любого языка программирования очень важно много практиковаться. В этом уроке Вы найдёте различные задачи, которые помогут Вам развить алгоритмическое мышление.
I like Python
Напишите программу, которая выводит на экран текст «I***like***Python» (без кавычек).
Управляемый разделитель
Напишите программу, которая считывает строку-разделитель и три строки, а затем выводит указанные строки через разделитель.
Сумма трёх чисел
Напишите программу, которая считывает три целых числа и выводит на экран их сумму. Каждое число записано в отдельной строке.
Следующее и предыдущее
Напишите программу, которая считывает целое число, после чего на экран выводится следующее и предыдущее целое число с пояснительным текстом.
Разделяй и властвуй
Напишите программу, которая считывает целое положительное число xx и выводит на экран последовательность чисел x, 2x, 3x, 4x, 5x, разделённых тремя черточками.
Расстояние в метрах
Напишите программу, которая находит полное число метров по заданному числу сантиметров.
Сама неотвратимость
Безумный титан Танос собрал все 6 камней бесконечности и намеревается уничтожить половину населения Вселенной по щелчку пальцев. При этом если население Вселенной является нечетным числом, то титан проявит милосердие и округлит количество выживших в большую сторону. Помогите Мстителям подсчитать количество выживших.
Пересчет временного интервала
Напишите программу для пересчёта величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах.
Трехзначное число
Напишите программу, в которой рассчитывается сумма и произведение цифр положительного трёхзначного числа.
Четырёхзначное число
Напишите программу для нахождения цифр четырёхзначного числа.
Пароль
При регистрации на сайтах требуется вводить пароль дважды. Это сделано для безопасности, поскольку такой подход уменьшает возможность неверного ввода пароля.
Напишите программу, которая сравнивает пароль и его подтверждение. Если они совпадают, то программа выводит: «Пароль принят», иначе: «Пароль не принят».
Четное или нечетное?
Напишите программу, которая определяет, является число четным или нечетным.
Роскомнадзор
Напишите программу, которая определяет, разрешен пользователю доступ к интернет-ресурсу или нет.
Формат входных данных
На вход программе подаётся целое число — возраст пользователя.
Формат выходных данных
Программа должна вывести текст «Доступ разрешен» если возраст не менее 18, и «Доступ запрещен» в противном случае.
Арифметическая прогрессия
Напишите программу, которая определяет, являются ли три заданных числа (в указанном порядке) последовательными членами арифметической прогрессии.
Наименьшее из четырёх чисел
Напишите программу, которая определяет наименьшее из четырёх чисел.
Только +
Напишите программу, которая считывает три числа и подсчитывает сумму только положительных чисел.
Принадлежность 1
Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число промежутку от -1 до 17.
Принадлежность 2
Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число указанным промежуткам: от минус бесконечности до -3 и от 7 до бесконечности.
Принадлежность 3
Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число указанным промежуткам: от -30 до -2 и от 7 до 25.
Високосный год
Напишите программу, которая определяет, является ли год с данным номером високосным. Если год является високосным, то выведите «YES», иначе выведите «NO». Год является високосным, если его номер кратен 4, но не кратен 100, или если он кратен 400.
Ход ладьи
Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли ладья попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести «YES», если из первой клетки ходом ладьи можно попасть во вторую, или «NO» в противном случае.
Ход короля
Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести «YES», если из первой клетки ходом короля можно попасть во вторую, или «NO» в противном случае.
Вид треугольника
Напишите программу, которая принимает три положительных числа и определяет вид треугольника, длины сторон которого равны введенным числам.
Самописный калькулятор
Напишите программу, которая считывает с клавиатуры два целых числа и строку. Если эта строка является обозначением одной из четырёх математических операций (+, -, *, /), то выведите результат применения этой операции к введённым ранее числам, в противном случае выведите «Неверная операция». Если пользователь захочет поделить на ноль, выведите текст «На ноль делить нельзя!».
Цветовой микшер
Красный, синий и желтый называются основными цветами, потому что их нельзя получить путем смешения других цветов. При смешивании двух основных цветов получается вторичный цвет:
- если смешать красный и синий, то получится фиолетовый;
- если смешать красный и желтый, то получится оранжевый;
- если смешать синий и желтый, то получится зеленый.
Напишите программу вывода на экран трех последовательно идущих чисел, каждое на отдельной строке. Первое число вводит пользователь, остальные числа вычисляются в программе.
Формат входных данных:
На вход программе подается одно целое число.
Формат выходных данных:
Программа должна вывести три последовательно идущих числа в соответствии с условием задачи.
Напишите программу, которая считывает три целых числа и выводит на экран их сумму. Каждое число записано в отдельной строке.
Формат входных данных:
На вход программе подаётся три целых числа, каждое на отдельной строке.
Формат выходных данных:
Программа должна вывести сумму введенных чисел.
Напишите программу, вычисляющую объём куба и площадь его полной поверхности, по введённому значению длины ребра.
Формат выходных данных:
Программа должна вывести текст и числа в соответствии с условием задачи.
Формат выходных данных:
Программа должна вывести значение функции по введённым числам a a и b b .
Напишите программу, которая считывает целое число, после чего на экран выводится следующее и предыдущее целое число с пояснительным текстом.
Формат входных данных:
На вход программе подаётся целое число.
Формат выходных данных:
Программа должна вывести текст согласно условию задачи.
Задача: Стоимость покупки
Напишите программу, которая считает стоимость трех компьютеров, состоящих из монитора, системного блока, клавиатуры и мыши.
Задача 1
Напишите программу, которая запрашивает у пользователя размер обуви, а выводит на экран размер скальных туфель (туфли для скалолазания), учитывая, что обычно размер скальных туфель на два размера меньше обычного.
Задача 2
Тест по английскому языку состоит из трёх частей. Ученик последовательно вводит с клавиатуры набранные баллы за каждую часть — три целых числа. Каждое число вводится на отдельной строке, то есть input() запрашивается три раза. Напишите программу, которая считает итоговый балл за тест — сумму баллов за три части.
Задача 3
В переменной salary хранится значение заработной платы человека в рублях (можете сами присвоить salary какое-нибудь значение).
Задача 4
Напишите программу, которая запрашивает у пользователя сумму (в рублях), которую он хочет перевести своему другу на карту другого банка, и возвращает сумму списания (в рублях) с учётом комиссии банка 5%.
Примечание: считайте, что сумма перевода — целое число.
Задача 5
Питон выполз на улицу погулять и решил поиграть: просил прохожих назвать какую-нибудь цифру (то есть ввести её с клавиатуры) и приписывал эту цифру к цифре, которую назвал предыдущий прохожий. Напишите код, который позволит определить, какое число получится после опроса четырёх прохожих, если известно, что первый прохожий назвал цифру 5. Задача не подразумевает использование циклов; запускать код несколько раз / копировать строки кода или ячейки можно. Обратите внимание: в результате должно получиться целое число, не строка.
Задача 6
Дано целое число n. Выведите следующее за ним чётное число. При решении этой задачи нельзя использовать условный оператор if и циклы.
Задача 7
Составить программу расчета гипотенузы прямоугольного треугольника. Длина катетов запрашивается у пользователя.
Задача 8
Составить программу нахождения корней квадратного уравнения в общем виде. Коэффициенты запрашиваются у пользователя.
Задача 9
Составить программу вывода таблицы умножения на число M. Таблица составляется от M * a, до M * b, где M, a, b запрашиваются у пользователя. Вывод должен осуществляется в столбик, по одному примеру на строку в следующем виде (например):
5 х 4 = 20
5 х 5 = 25
И так далее.
Читайте также: