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




Лабораторная работа 3

Циклы

Основные сведения

Цикл for

Если известно точное количество действий (итераций) цикла, то возможно использоватьцикл 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.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: