По данному натуральному числу n выведите такое наименьшее целое число k что 2k n
Перейти к содержимому

По данному натуральному числу n выведите такое наименьшее целое число k что 2k n

Задание к лабораторной работе № 3

Если известно точное количество действий (итераций) цикла, то возможно использоватьциклfor. Синтаксис его выглядит примерно так:

Итерацией цикла называется один проход этого цикла

Существует частный случай этой записи:

Счетчик цикла – это переменная, в которой хранится количество проходов данного цикла.

Описание синтаксиса:

· Сначала присваивается первоначальное значение счетчику, после чего ставится точка с запятой.

· Затем задается конечное значение счетчика цикла. После того, как значение счетчика достигнет указанного предела, цикл завершится. Снова ставиться точка с запятой.

· Задаем шаг цикла.Шаг цикла– это значение, на которое будет увеличиваться или уменьшать счетчик цикла при каждом проходе.

Напишем программу, которая будет считать сумму всех чисел от 1 до 1000.

Если скомпилировать этот код и запустить программу, то она покажет ответ: 500500. Это и есть сумма всех целых чисел от 1 до 1000. Если считать это вручную, понадобится очень много времени и сил. Цикл выполнил всю рутинную работу.

Конечное значение счетчика я задано нестрогим неравенством (<= – меньше либо равно), поскольку, если поставить знак меньше, то цикл произвел бы 999 итераций, т.е. на одну меньше, чем требуется. Значение шага цикла задано равное единице.i++ – это тоже самое, что иi = i + 1.

В теле цикла, при каждом проходе программа увеличивает значение переменнойsumнаi. Еще один очень важный момент – в начале программы присваивается переменнойsumзначение нуля. При объявлении переменной без ее инициализации переменная будет хранить «мусор».

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

Цикл while

Когда не известно, количество итераций должен произвести цикл, нам понадобится циклwhileилиdo. while. Синтаксис циклаwhileв C++ выглядит следующим образом.

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

Ниже приведен исходный код программы, считающей сумму всех целых чисел от 1 до 1000.

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

Теперь рассмотрим по порядку исходный код программы. Сначала инициализируется счетчик цикла и переменная, хранящая сумму чисел.

В данном случае обязательно должны присвоить счетчику цикла какое-либо значение, т.к. в предыдущей программе это значение присваивали внутри циклаfor, здесь же, если не инициализировать счетчик цикла, то в него попадет «мусор» и компилятор в лучшем случае выдаст ошибку, а в худшем, если программа соберется поведение предсказать невозможно.

Затем описываем условие цикла – «пока переменная i меньше 1000 – выполняй цикл». При каждой итерации цикла значение переменной-счетчикаiувеличивается на единицу внутри цикла.

Когда выполнится 1000 итераций цикла, счетчик станет равным 999 и следующая итерация уже не выполнится, поскольку 1000 не меньше 1000. Выражениеsum += iявляется укороченной записьюsum = sum + i.

После окончания выполнения цикла, выводим сообщение с ответом.

Цикл dowhile

Циклdowhileочень похож на циклwhile. Единственное их различие в том, что при выполнении циклаdowhileодин проход цикла будет выполнен независимо от условия. Решение задачи на поиск суммы чисел от 1 до 1000, с применением циклаdowhile.

Принципиального отличия нет, но если присвоить переменнойiзначение, большее, чем 1000, то цикл все равно выполнит хотя бы один проход.

Задание к лабораторной работе № 3

Отчет должен состоять из:

1. Набранные программы из лабораторной работы (со всех скриншотов)

2. Индивидуальное задание, согласно вашего варианта (коды и скриншоты выполнения), которые решают поставленные задачи.

3. Вовремя зашиты необходимо уметь ответить на поставленные вопросы и разбираться в коде.

Во всех задачах этого листочка основная (содержательная) часть программы должна быть оформлена в виде функции. Функцияmainдолжна считывать значения входных данных, вызывать основную функцию, решающую задачу, выводить результат на экран.

1. Напечатайте все точные квадраты натуральных чисел, не превосходящие данного числа n. (например, при вводе 50 программа должна вывести1 4 9 16 25 36 49).

2. Дано натуральное число n. Определите, является ли оно степенью числа 2, и выведите словоYES, если является и словоNO, если не является.

3. Для данного натурального числа n определите такое наименьшее целое k, что 2k≥n. Например, при вводе числа7программа должна вывести3.

4. В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит не менее y километров. Например, при вводе10 20программа должна вывести9. x и y– действительные числа, ответ– целое число.

5. В первый день спортсмент пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который суммарный пробег спортсмена составит не менее y километров. Например, при вводе10 1000программа должна вывести8.

6. Дано натуральное число n. Напишите функциюintSumOfDigits (int n), вычисляющую сумму цифр числа n. Выведите сумму цифр числа n.

7. Дано натуральное число n. Напишите функциюintNumberOfZeroes (int n), определяющую количество нулей среди всех цифр числа n. Выведите результат.

8. Дано натуральное число n. Напишите функциюintMinDigit (int n)иintMaxDigit (int n), определяющую наименьшую и наибольшую цифры данного числа. Выведите наименьшую и наибольшую цифры данного числа (например, при вводе179программа выводит1 9).

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

10. По данному натуральному числу n найдите сумму чисел Количество действий должно быть пропорционально n. Напишите программу, которая считывает значение n и выводит результат в виде действительного числа. К чему будет стремиться эта сумма при росте числа n?

11. По данному числу n выведите n-e число Фибоначчи. Чи́слаФибона́ччи — элементы последовательности 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, … в которой первые два числа равны либо 1 и 1, либо 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел. Названы в честь средневекового математика Леонардо Пизанского (известного как Фибоначчи).Использовать рекурсию нельзя.

12. Напишите функциюintreverse(int n), которая переставляет цифры числа в обратном порядке (например,reverse(179,971). Напишите программу, которая по данному натуральному n печатает его цифры в обратном порядке.

13. Назовем число палиндромом, если оно не меняется при перестановке его цифр в обратном порядке. Напишите функциюboolIsPalindrome (int n), проверяющую по данному числу n, является ли оно палиндромом. Напишите программу, которая по заданному числу K выводит количество натуральных палиндромов, не превосходящих K. Например, при вводе1программа выводит1, а при вводе100программа выводит18.

Цикл while

Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.

Синтаксис цикла while в простейшем случае выглядит так:

При выполнении цикла while сначала проверяется условие. Если оно ложно, то выполнение цикла прекращается и управление передается на следующую инструкцию после тела цикла while . Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.

Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10. Видно, что цикл while может заменять цикл for . in range(. ) :

В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется счетчиком. Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11 , поскольку именно при i==11 условие i<=10 впервые перестанет выполняться.

Вот еще один пример использования цикла while для определения количества цифр натурального числа n :

В этом цикле мы отбрасываем по одной цифре числа, начиная с конца, что эквивалентно целочисленному делению на 10 ( n //= 10 ), при этом считаем в переменной length , сколько раз это было сделано.

В языке Питон есть и другой способ решения этой задачи: .

Инструкции управления циклом

После тела цикла можно написать слово else: и после него блок операций, который будет выполнен один раз после окончания цикла, когда проверяемое условие станет неверно:

Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно просто написать после окончания цикла. Смысл появляется только вместе с инструкцией break , использование которой внутри цикла приводит к немедленному прекращению цикла, и при этом не исполняется ветка else . Разумеется, инструкцию break осмыленно вызывать только из инструкции if , то есть она должна выполняться только при выполнении какого-то особенного условия.

Другая инструкция управления циклом — continue (продолжение цикла). Если эта инструкция встречается где-то посередине цикла, то пропускаются все оставшиеся инструкции до конца цикла, и исполнение цикла продолжается со следующей итерации.

Инструкции break , continue и ветка else: можно использовать и внутри цикла for . Тем не менее, увлечение инструкциями break и continue не поощряется, если можно обойтись без их использования. Вот типичный пример плохого использования инструкции break .

Упражнения

A: Список квадратов

По данному целому числу N распечатайте все квадраты натуральных чисел, не превосходящие N, в порядке возрастания.

Ввод Вывод

B: Минимальный делитель

Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.

Ввод Вывод

C: Список степеней двойки

По данному числу N распечатайте все целые степени двойки, не превосходящие N, в порядке возрастания.

Операцией возведения в степень пользоваться нельзя!

Ввод Вывод

D: Точная степень двойки

Дано натуральное число N. Выведите слово YES , если число N является точной степенью двойки, или слово NO в противном случае.

Операцией возведения в степень пользоваться нельзя!

Ввод Вывод

E: Двоичный логарифм

По данному натуральному числу N выведите такое наименьшее целое число k, что 2 k ≥N.

Операцией возведения в степень пользоваться нельзя!

Ввод Вывод

F: Утренняя пробежка

В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит не менее y километров.

Программа получает на вход действительные числа x и y и должна вывести одно натуральное число.

Ввод Вывод

G: Банковские проценты *

Эта задача является необязательной

Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная часть копеек отбрасывается. Определите, через сколько лет вклад составит не менее y рублей.

Программа получает на вход три натуральных числа: x, p, y и должна вывести одно целое число.

Ввод Вывод

0 .

Ввод Вывод

R: Числа Фибоначчи

Последовательность Фибоначчи определяется так:

По данному числу n определите n-е число Фибоначчи fn.

Ввод Вывод

S: Номер числа Фибоначчи

Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что fn=A. Если А не является числом Фибоначчи, выведите число -1.

Ввод Вывод

T: Исполнитель “Раздвоитель”

Исполнитель “Раздвоитель” преобразует натуральные числа. У него есть две команды: “Вычесть 1” и “Разделить на 2”, первая команда уменьшает число на 1, вторая команда уменьшает число в два раза, если оно чётное, иначе происходит ошибка.

Дано два натуральных числа A и B (A>B). Напишите алгоритм для Развоителя, который преобразует число A в число B и при этом содержит минимальное число команд. Команды алгоритма нужно выводить по одной в строке, первая команда обозначается, как -1 , вторая команда как :2 .

Ввод Вывод

U: Максимальное число идущих подряд одинаковых элементов

Дана последовательность натуральных чисел, завершающаяся числом 0. Определите, какое наибольшее число подряд идущих элементов этой последовательности равны друг другу.

Ввод Вывод

V: Максимальная длина монотонного фрагмента последовательности

Дана последовательность натуральных чисел, завершающаяся число 0. Определите наибольшую длину монотонного фрагмента последовательности (то есть такого фрагмента, где все элементы либо больше предыдущего, либо меньше).

Ввод Вывод

W: Количество локальных максимумов последовательности

Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и последующего элемента последовательности. Первый и последний элемент последовательности не являются локальными максимумами.

Дана последовательность натуральных чисел, завершающаяся числом 0. Определите количество строгих локальных максимумов в этой последовательности.

Ввод Вывод

X: Наименьшее расстояние между двумя строгими локальными максимумами

Определите наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0. Если в последовательности нет двух локальных максимумов, выведите число 0.

Ввод Вывод

Y: Среднеквадратичное отклонение

Дана последовательность натуральных чисел \(x_1\), \(x_2\), . \(x_n\). Среднеквадратичным отклонением называется величина \[ \sigma = \sqrt<\frac<(x_1-s)^2+(x_2-s)^2+\ldots+(x_n-s)^2>> \] где \(s=\frac\) — среднее арифметическое последовательности.

Определите среднеквадратичное отклонение для данной последовательности натуральных чисел, завершающейся числом 0.

Z: Исполнитель “Водолей”

  1. Наполнить сосуд A (обозначается >A ).
  2. Наполнить сосуд B (обозначается >B ).
  3. Вылить воду из сосуда A (обозначается A> ).
  4. Вылить воду из сосуда B (обозначается B> ).
  5. Перелить воду из сосуда A в сосуд B (обозначается как A>B ).
  6. Перелить воду из сосуда B в сосуд A (обозначается как B>A ).

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

Программа получает на вход три натуральных числа A, B, N, не превосходящих 10 4 Вам необходимо вывести алгоритм действий Водолея, который позволяет получить в точности N литров в одном из сосудов, если же такого алгоритма не существует, то программа должна вывести текст Impossible .

Количество операций в алгоритме не должно превышать 10 5 . Гарантируется, что если задача имеет решение, то есть решение, которое содержит не более, чем 10 5 операций.

прикладная математика

Задача 1
Дано целое число, не меньшее 2. Выведите его наименьший натуральный делитель, отличный от 1.

Задача 2
По данному числу N распечатайте все целые степени двойки, не превосходящие N, в порядке возрастания.
Операцией возведения в степень пользоваться нельзя!

Задача 3
По данному натуральному числу N выведите такое наименьшее целое число k, что 2 kN.
Операцией возведения в степень пользоваться нельзя!

Задача 4
В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу yопределите номер дня, на который пробег спортсмена составит не менее y километров.
Программа получает на вход действительные числа x и y и должна вывести одно натуральное число.

Задача 5
Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная часть копеек отбрасывается. Каждый год сумма вклада становится больше. Определите, через сколько лет вклад составит не менее y рублей.
Программа получает на вход три натуральных числа: x, p, y и должна вывести одно целое число.

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

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