Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

алгоритмизация и программирование 6 глава




8. Вычислить значение функции

9. Две окружности заданы координатами центра и радиусами. Сколько точек пересечения имеют эти окружности?

10. В два сосуда, один из которых имеет форму шара радиуса R 1, а другой – форму куба с ребром А, доверху налита вода. Сравните количество воды в сосудах.

11. Вычислить значение функции:

12. Даны три произвольных действительных числа. Можно ли построить треугольник с такими длинами сторон?

13. Какая из точек A (a 1, a 2) или B (b 1, b 2) находится дальше от начала координат?

14. Две прямые заданы уравнениями: a 1 x + b 1 y + c 1 =0 и a 2 x + b 2 y + c 2 =0. Определить, пересекаются ли они.

15. Попадёт ли тока А (a 1, a 2) в окружность заданного радиуса с центром в начале координат?

16. Вычислить значение функции
где a = 2.8, b = - 0.3, c = 4.

17. В заборе выпилена дыра прямоугольной формы с известными размерами. Определить, пройдёт ли в эту дыру мяч заданного радиуса.

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

19. В григорианском календаре каждый год, номер которого делится на 4, является високосным, за исключением тех, которые делятся на 100 и не делятся на 400 нацело. Определить число дней в году по номеру года. Т.о. 1900 г. - не високосный, 2000 г. – високосный.

20. Определить, есть ли среди четырёх заданных чисел кратные пяти.

21. Вычислить значение функции , где а = -0.5, b = 2.

22. Из трех действительных чисел a, b и c выбрать те, модули которых больше 4.

23. Даны три произвольных действительных числа. Можно ли построить треугольник с такими длинами сторон? Если да, то вывести на экран является ли заданный треугольник равносторонним, равнобедренным или разносторонним.

24. Даны действительные числа x и y. Найти U = max2 (x 2 y, xy 2).

25. Решить квадратное уравнение.

Задание II

Решить задачу с использованием конструкции выбора:

1. Дано число c. Распечатать величину этого числа в словесной форме, учитывая его знак. Предусмотреть, что -7 ≤ с ≤ 7.

2. Дано число m (1 £ m £ 12).Определить, сколько дней в месяце с номером m. Год не високосный.

3. С клавиатуры вводится натуральное число n – количество граней выпуклого многогранника. В зависимости от значения n вывести на экран фразу «Выпуклый многогранник имеет n граней», согласовав окончание слова "грань" с числом n. Предусмотреть, что 0 ≤ n ≤ 25. Если выпуклого многогранника с заданным количеством граней не существует, выдать соответствующее сообщение.

4. С клавиатуры вводится цифра m (от 1 до 4). Вывести на экран названия месяцев, соответствующих времени года с номером m (считать зиму временем года № 1).

5. С клавиатуры вводится натуральное число n – количество граней выпуклого многогранника. В зависимости от значения n вывести на экран в словесной форме название правильного выпуклого многогранника или сообщить, что правильного выпуклого многогранника с таким количеством граней не существует.

Предусмотреть, что 4 ≤ n ≤ 20.

Примечание. Существует пять выпуклых правильных многогранников: тетраэдр (4 грани); гексаэдр или куб (6 граней); октаэдр (8 граней); додекаэдр (12 граней); икосаэдр (20 граней)

6. Дано натуральное число n < 25. Вывести на экран фразу «мне n лет (год или года)» соответственно.

7. Найти значение функции:

8. Дано число m (1 £ m £ 12).Определить, к какому времени года относится месяц с номером m.

9. Вводится целое число . Если C > 0, то вывести на экран название этого числа в словесной форме. В противном случае сообщить, что число отрицательное.

10. С клавиатуры вводится натуральное число n – количество углов многоугольника. В зависимости от значения n вывести на экран название многоугольника или сообщить, что многоугольника с таким количеством углов не существует.

Предусмотреть, что 0 ≤ n ≤ 6.

11. С клавиатуры вводится натуральное число n. В зависимости от значения остатка r при делении числа n на 7 вывести на экран число n в виде n = 7 k + r, где r представить в словесной форме.

12. Дано число m. Определить полугодие, на которое приходится месяц m и количество дней в этом месяце. Предусмотреть, что 1 ≤ m ≤ 12. Год не високосный.

13. Дано число n. Напечатать фразу "Мы успешно сдали n экзаменов", согласовав окончание слова "экзамен" с числом n. Предусмотреть, что 1 ≤ n ≤ 25.

14. Определить время года, к которому относится месяц m и определить количество дней в этом месяце. Предусмотреть, что 1 ≤ m ≤ 12. Год високосный.

15. Дано число c. Распечатать величину этого числа в словесной форме. Предусмотреть, что 0 ≤ с ≤ 7.

16. Даны два числа D – день и М – месяц. Определить К – порядковый номер того дня високосного года, который имеет дату D и M.

17. Даны три числа D, M и G, определяющие день, месяц и год. Проверить образуют ли они правильную дату и вывести соответствующее сообщение. Например, 31.06.90 - неправильная дата. Год не високосный.

18. С клавиатуры вводится цифра от 0 до 9. Вывести на экран название этой цифры в словесной форме.

19. В понедельник фирма работает с 9-00 до 16-00; во вторник, среду, четверг, пятницу – с 8-00 до 19-00; в субботу – с 10-00 до 15-00; воскресенье – выходной. По заданному номеру дня недели определить часы работы.

20. Найти значение функции: где a = 4.

21. С клавиатуры вводится натуральное число n. В зависимости от значения остатка r при делении числа n на 5 вывести на экран число n в виде n = 5 k + r, где r представить в словесной форме.

22. На первом курсе студенты четырёх групп сдают зачёт по информатике. На втором курсе группа № 1 сдаёт экзамен по дисциплине «Информационные технологии в экономике», группа № 2 – экзамен по дисциплине «Информационные технологии в физике», группа № 3 – экзамен по дисциплине «Информационные технологии в географии», группа № 4 – экзамен по дисциплине «Информационные технологии в математических исследованиях». Задать с клавиатуры номер курса и номер группы и вывести на экран сообщение, какой зачёт или экзамен группа будет сдавать.

23. С клавиатуры задано целое число N < 5. Если оно положительное, то вывести на экран его название в словесной форме. В противном случае найти квадрат этого числа.

24. Студенты убирают яблоки. Нормы следующие: студент 1 курса должен собрать в день не менее 50 кг яблок, студент второго курса – не менее 60 кг в день, студент 3 курса – не менее 70 кг в день. Зная курс, на котором учится студент, определить, выполнил ли он дневную норму.

25. Дано число m (1 £ m £ 12). Определить, сколько дней в месяце с номером m. Учесть високосный или не високосный год.

Задания для самостоятельной работы

1. Определить D и М -дату К -го по счету дня високосного года. Месяц вывести в словесной форме. D - день, М - месяц. Предусмотреть, что 1 ≤ К ≤ 366.

2. Компания по снабжению электроэнергией взимает плату с клиентов по тарифу:

· 7 р. за 1 кВт/ч за первые 250 кВт/ч;

· 17 р. за кВт/ч, если потребление свыше 250, но не превышает 300 кВт/ч;

· 20 р. за кВт/ч, если потребление свыше 300 кВт/ч.

Потребитель израсходовал n кВт/ч. Подсчитать плату.

3. Школьники сдают нормы по прыжкам в длину. Если длина прыжка больше 2,50 м, то оценка – «5», если от 2 м до 2,5 м - оценка «4»; от 1,5 м до 2 м - оценка «3»; если меньше 1,5 м – «2». Выставить школьнику оценку, если известна длина его прыжка. Примечание: 1 м = 100 см.

4. При покупке товара на сумму от 200 до 500 руб предоставляется скидка 3%, при покупке товара на сумму от 500 до 800 – скидка 5%, при покупке товара на сумму от 800 до 1000 руб – скидка 7%, свыше 1000 руб – скидка 10%. Покупатель приобрел 8 рулонов обоев по цене Х 1 и две банки краски по цене Х 2. Сколько он заплатил?

5. Студенты убирают урожай помидоров. При сборе до 50 кг в день работа оплачивается из расчёта 30 руб. за 1 кг; при сборе от 50 до 75 кг в день – 50 руб. за 1 кг; при сборе от 75 до 90 кг в день – 65 руб. за 1 кг; при сборе свыше 90 кг в день – 70 руб. за 1 кг плюс 120 руб. премия. Студент собрал X кг за день. Определить его заработок.

6. Ученики начальной школы сдают технику чтения. В 1 классе скорость чтения до 20 слов в мин считается низкой, от 21 до 40 слов в мин – средней, от 41 до 50 – выше среднего, более 51 слова в мин – высокой. Во втором классе скорость чтения до 30 слов в мин считается низкой, от 31 до 60 слов в мин – средней, от 61 до 70 – выше среднего, более 71 слова в мин – высокой. Задать с клавиатуры номер класса и количество прочитанных учеником в минуту слов. Оценить скорость чтения.

7. Студенты убирают яблоки. Студентам 1 курса при сборе до 50 кг в день работа оплачивается из расчёта 30 коп. за 1 кг; при сборе от 50 до 75 кг в день – 50 коп. за 1 кг; при сборе от 75 до 90 кг в день – 65 коп. за 1 кг; при сборе свыше 90 кг в день – 70 коп. за 1 кг плюс 20 руб премия. Студентам 2 курса при сборе до 60 кг в день работа оплачивается из расчёта 35 коп. за 1 кг; при сборе от 61 до 80 кг в день – 55 коп. за 1 кг; при сборе от 81 до 95 кг в день – 65 коп. за 1 кг; при сборе свыше 95 кг в день – 70 коп. за 1 кг плюс 30 руб премия.

Студент собрал X кг яблок за день. Определить его заработок.

8. С клавиатуры задаётся целое число А > -5. Для положительного однозначного числа определить, является ли оно чётным; для положительного двузначного определить, кратно ли оно 3; для положительного трёхзначного числа определить, кратно ли оно 5; для числа, большего 999, определить, кратно ли оно 10. Если число А < 0, то вывести на экран его название в словесной форме.

9. Школьники сдают нормы по прыжкам в длину. Для учеников 5 класса нормы следующие: если длина прыжка больше 2,50 м, то оценка - 5, если от 2 м до 2,5 - оценка 4; от 1,5 м до 2 м - оценка 3; если меньше 1,5 м - 2. Нормы для учеников 6 класса: если длина прыжка больше 3,0 м, то оценка - 5, если от 2,5 м до 3,0 - оценка 4; от 2,0 м до 2,5 м - оценка 3; если меньше 2,0 м – оценка 2. Ученики других классов прыжки не сдают.

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

10. Школьники сдают нормы по прыжкам в длину. Для учеников 2 класса минимальная длина прыжка должна быть не менее 1,2 м; для учеников 3 класса – не менее 1,5 м; для 4 класса – не менее 1,7 м; для 5 класса не менее 2,0 м.

Зная номер класса и длину прыжка ученика, определить, сдан ли норматив.

11. С клавиатуры задаётся натуральное число N < 100. Если оно однозначное, то вывести на экран его название в словесной форме. Если число двузначное, то сообщить об этом и определить остаток от деления его на 2, 3, 5.

12. Компания по снабжению электроэнергией взымает плату с клиентов по тарифу:

ü 7 р. за 1 кВт/ч за первые 250 кВт/ч;

ü 17 р. за кВт/ч, если потребление свыше 250, но не превышает 300 кВт/ч;

ü 20 р. за кВт/ч, если потребление свыше 300 кВт/ч.

Существуют три категории потребителей. Тариф 1 категории составляет 75% общей стоимости, тариф 2 категории – половину общей стоимости. Остальные оплачивают полностью.

Потребитель израсходовал n кВт/ч. Подсчитать плату, зная его категорию.

13. С клавиатуры задано натуральное число N < 10000. Сообщить, является ли оно однозначным, двузначным, трёхзначным или четырёхзначным. В каждом случае определить, чётное оно или нечётное.

14. Ученики начальной школы сдают технику чтения. Нормы следующие: в 1 классе ребёнок должен читать не менее 20 слов в минуту; во втором классе – не менее 50 слов в мин; в 3 классе – не менее 60 слов в мин, в 4 классе – не менее 70 слов в минуту. Задавая с клавиатуры номер класса и количество прочитанных учеником в минуту слов, определить, сдана ли техника чтения.

15. Даны три целых числа определяющие дату: год, месяц, день. Считая, что год не високосный, определить дату следующего дня.

Контрольные вопросы

1. Что такое составной оператор?

2. Какова полная (неполная) форма команды ветвления (блок-схема)?

3. Каков алгоритм выполнения команды ветвления?

4. Каков алгоритм выполнения команды множественного ветвления (выбора)? Блок-схема.

5. Какие операторы сравнения используются в C++?

6. Что называется простым условием? Приведите примеры.

7. Что такое составное условие? Приведите примеры.

8. Какие логические операторы допускаются при составлении сложных условий?

9. Каков результат применения оператора логическое "И" (&&)?

10. Каков результат применения оператора логическое "ИЛИ" (||)?

11. Каков результат применения оператора логическое отрицание (!)?

12. Каков общий вид (формат) инструкции «Ветвление»?

13. Каков алгоритм выполнения условной (тернарной) операции (?:)? Приведите пример.

14. Каков общий вид (формат) инструкции «Выбор»?

15. Может ли оператор ветвления содержать внутри себя другие ветвления?

Пример выполнения лабораторной работы

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

Решение

1. Математическая модель

Наибольшая площадь будет у окружности с наибольшим радиусом.

Аргументы: r1, r2 вещественного типа – радиусы окружностей.

Результаты: S вещественного типа – значение наибольшей площади.

2. Алгоритм 3. Программа

конец
S
r1 > r2
S = p*r1*r1
S=p*r2*r2
начало
да
нет

  #include <iostream> #include <conio.h> #include <math.h>   using namespace std;   int main() { const double pi = 3.14159265359; double r1, r2, S; cout<<" Введите радиусы r1 и r2: "; cin>>r1>>r2;   if (r1>r2) S = pi*pow(r1, 2.0); else S = pi*pow(r2, 2.0); cout<<" S = "<<S;   _getch(); return 0; }

4. Результат работы программы

Введите радиусы r1 и r2: 6 3

S = 113.04


Задание II. Дан номер месяца m. Вывести на экран название этого месяца.

Решение

1. Математическая модель

Для решения задачи необходимо использовать инструкцию выбора.

Аргументы: m целого типа - номер месяца.

Результаты: текстовое сообщение.

 

2. Алгоритм 3. Программа

+
+
+
m = 1
Ввод значения m
‘Январь’
m = 2
m = 12
‘Февраль’
‘Декабрь’
‘Задан неверный номер месяца’
Начало  
Конец

#include <iostream> #include <conio.h>   using namespace std;   int main() { int a;   cout<<"Введите номер месяца: "<<endl; cin>>a;   switch (a) { case 1: cout<<"Январь"<<endl; break; case 2: cout<<"Февраль"<<endl; break; case 3: cout<<" Март "<<endl; break; case 4: cout<<"Апрель"<<endl; break; case 5: cout<<" Май"<<endl; break; case 6: cout<<" Июнь"<<endl; break; case 7: cout<<" Июль"<<endl; break; case 8: cout<<" Август"<<endl; break; case 9: cout<<"Сентябрь"<<endl;break; case 10: cout<<"Октябрь"<<endl; break; case 11: cout<<"Ноябрь"<<endl; break; case 12: cout<<"Декабрь"<<endl; break; default: cout<<" Ошибка ввода "<<endl; } _getch(); return 0; }  

4. Результат работы программы

Введите номер месяца: 5

Май


4. Циклы

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

Блок, ради которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла (рис.1). Один проход цикла называется итерацией.

Начальные установки
Условие
операторы
Модификация параметра цикла
а)
+
_
Начальные установки
Условие
операторы
Модификация параметра цикла
+
b)

Рисунок 4.1 Структурные схемы выполнения цикла

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

Проверка условия продолжения цикла выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием, рис. 4.1а), либо после тела цикла (цикл с постусловием, рис 4.1б). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.

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

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

4.1. Оператор цикла с параметром (for)

Цикл с параметром (цикл со счетчиком, арифметический цикл, цикл «для») – это цикл с заранее известным числом повторений. Подходит только для программирования таких циклических фрагментов, в которых до выполнения цикла известны начальное и конечное значения счетчика повторений цикла.

Формат оператора:

for (инициализация; выражение; модификации) оператор;

Графическая интерпретация оператора цикла for

Тело цикла
НУ;УВ;МПЦ  
НУ – начальные установки (инициализация) УВ – условное выражение МПЦ – модификация параметра цикла  

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

Например, так:

for (int i = 0, j = 2; …

или

int k, m;

for (k = 1, m = 0 …

Областью действия переменных, объявленных в части инициализации цикла, является цикл. Инициализация выполняется один раз в начале исполнения цикла.

Выражение определяет условие выполнения цикла: если его результат, приведенный к типу bool, равен true, цикл выполняется. Цикл с параметром реализован как цикл с предусловием.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификации можно записать несколько операторов через запятую. Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).

Значение переменной-счетчика можно использовать в теле цикла; изменение его значения тоже допускается, но считается плохим стилем программирования.

Замечание. Цикл с параметром не вызывает зацикливания, так как предполагает конечное число повторений.

Для всех операторов цикла выход из цикла осуществляется как вследствие естественного окончания оператора цикла, так и с помощью операторов перехода (goto – безусловный переход, continue – переход к следующей итерации) и выхода (break – выход из цикла).


Пример: Вывести на экран таблицу квадратов первых пяти чисел.

s = i*i
Вывод s
i=1,i<6,i++
Начало  
Конец

//numbers_and_them_squares #include <conio.h> #include <iostream> using namespace std;   int main(){ setlocale(LC_ALL,"Rus"); cout<<"\nЧисла и их квадраты:\n "; for (int i=1;i<6;i++) { int s=i*i; cout<<"\n"<<i<<"^2 = "<<s; } _getch(); return 0; }

4.2. Оператор цикла с предусловием (while)

Формат оператора:

while (выражение) оператор;

Графическая интерпретация оператора:

Тело цикла
Условие
+
_
Оператор while позволяет многократно выполнять одни и те же действия в зависимости от значения выражения (условия). Тип выражения должен быть арифметическим или приводимым к нему. Выражение вычисляется перед каждой итерацией цикла.

Работа оператора

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

Замечания:

- для того, чтобы тело цикла выполнилось хотя бы один раз, необходимо, чтобы перед выполнением тела цикла выражение (условие) было истинно;

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


Пример: Вывести на экран числа от 1 до 100.

i <= 100
i:= i + 1
+
Вывод i  
i:= 1  
Начало  
Конец

//Schet_ot_1_do_100; #include <conio.h> #include <iostream> using namespace std;   int main(){ setlocale(LC_ALL,"Rus"); cout<<"\nЧисла от 1 до 100:\n "; int i=1; //начальное значение параметра цикла while (i<=100) // перебираем первые 100 чисел { cout<<" "<<i<<" "; // вывод на экран значения i i++; // Увеличение параметра цикла на 1 } _getch(); return 0; }

4.3. Оператор цикла с постусловием (do while)

Формат оператора: Графическая интерпретация оператора

Тело цикла
Условие
+

 


do

оператор;

while (выражение);

 

Работа оператора

Сначала выполняется простой или составной оператор, составляющий тело цикла, а затем вычисляется выражение (условие). Если оно истинно (не равно false), тело цикла выполняется еще раз. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления. Тип выражения должен быть арифметическим или приводимым к нему.

Замечания:

- последовательность инструкций между do и while всегда будет выполнена хотя бы один раз;

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

Отличие оператора цикла while
от оператора цикла
do..while

В операторе while тело цикла может не выполняться ни разу, если логическое выражение сразу окажется ложным.


Пример: Вывести на экран числа от 1 до 100.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...