Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

С++ лабы

.pdf
Скачиваний:
277
Добавлен:
01.02.2019
Размер:
944.72 Кб
Скачать

case константа1:

последовательность инструкций break;

case константа2:

последовательность инструкций break;

default:

последовательность инструкций

}

Элемент выражение инструкции switch должен при вычислении давать целочисленное или символьное значение. Инструкция break завершает выполнение кода, определенного инструкцией switch. Инструкции default выполняются в том случае, если ни одна из case- констант не совпадает с результатом вычисления switch-выражения.

Самый универсальный цикл C++ – цикл for – имеет следующий формат:

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

{

последовательность инструкций

}

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

Например, следующая конструкция выведет на экран цифры от 0

до 10:

for (int i = 0; i <= 10; i++)

{

cout << i << '\n';

}

Еще одна форма организации циклов в C++ – цикл while: while (выражение) инструкция

Элемент инструкция выполняется до тех пор, пока условное выражение возвращает значение ИСТИНА.

Цикл do-while – это единственный цикл, который всегда делает итерацию хотя бы один раз:

do {

инструкции

11

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

В C++ существует средство «досрочного» выхода из текущей итерации цикла. Этим средством является инструкция continue. Она принудительно выполняет переход к следующей итерации, опуская выполнение оставшегося кода текущей.

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

Инструкция goto – это инструкция безусловного перехода. Например, с помощью инструкции goto и метки (идентификатор, за которым стоит двоеточие) можно организовать следующий цикл на 100 итераций:

int j = 0;

loop1:

cout << j << '\n'; j++;

if (j < 100) goto loop1;

В таблице 1.4 приведены основные математические функции, прототипы которых содержатся в заголовочном файле <cmath>.

Таблица 1.4 – Математические функции в С++

Функция

Прототип и краткое описание

1

2

abs

int abs(int i);

 

Возвращает абсолютное значение целого аргумента i.

acos

double acos(double x);

 

Функция арккосинуса. Значение аргумента должно

 

находиться в диапазоне от –1 до +1.

asin

double asin(double x);

 

Функция арксинуса. Значение аргумента должно нахо-

 

диться в диапазоне от –1 до +1.

atan

double atan(double x);

 

Функция арктангенса.

atan2

double atan2(double y, double x);

 

Функция арктангенса от значения y/x.

ceil

double ceil(double x);

 

Вычисляет ближайшее целое, не меньшее, чем аргу-

 

мент x.

12

Продолжение таблицы 1.4

1

2

cos

double cos(double x);

 

Функция косинуса. Аргумент задается в радианах.

exp

double exp(double x);

 

Вычисляет значение ex (экспоненциальная функция).

fabs

double fabs(double x);

 

Возвращает абсолютное значение вещественного аргу-

 

мента x двойной точности.

floor

double floor(double x);

 

Находит наибольшее целое, не превышающее значение

 

x. Возвращает его в форме double.

fmod

double fmod(double x, double y);

 

Возвращает остаток от деления нацело x на y.

frexp

double frexp(double value, int *exp);

 

Разбивает число с плавающей точкой value на нормали-

 

зованную мантиссу и целую часть как степень числа 2.

 

Целочисленная степень записывается в область памяти,

 

на которую указывает exp, а мантисса используется как

 

значение, которое возвращает функция.

hypot

double hypot(double x, double y);

 

Вычисляет гипотенузу z прямоугольного треугольника

 

по значениям катетов x, y

labs

long labs(long x);

 

Возвращает абсолютное значение длинного целого ар-

 

гумента x

ldexp

double ldexp(double v, int e);

 

Возвращает значение выражения v2e

log

double log(double x);

 

Возвращает значение натурального логарифма (ln x).

log10

double log10(double x);

 

Возвращает значение десятичного логарифма log10x

modf

double modf(double value, double *iptr);

 

Разделяет число с плавающей точкой value на целую и

 

дробную части. Целая часть записывается в области

 

памяти, на которую указывает iptr, дробная часть явля-

 

ется значением, возвращаемым функцией.

 

 

poly

double poly(double x, int n, double c[ ]);

 

Вычисляет значение полинома: c[n]xn + c[n–1]xn–1 +…+

 

c[1]x +c[0].

13

Продолжение таблицы 1.4

 

 

pow

double pow(double x, double y);

 

Возвращает значение xy.

pow10

double pow10(int p);

 

Возвращает значение 10p.

sin

double sin(double x);

 

Функция синуса. Угол задается в радианах.

sinh

double sinh(double x);

 

Возвращает значение гиперболического синуса для x.

sqrt

double sqrt(double x);

 

Возвращает положительное значение квадратного кор-

 

ня из x

tan

double tan(double x);

 

Функция тангенса. Угол задается в радианах.

tanh

double tanh(double x);

 

Возвращает значение гиперболического тангенса для x.

1.2 Варианты заданий к лабораторной работе

Общее для всех упражнение.

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

Индивидуальные задания.

Варианты индивидуальных заданий приведены в таблице 1.5. Необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся от xn до xk с шагом h=(xk-xn)/10. Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).

Таблица 1.5 – Варианты индивидуальных заданий

x

x

 

 

S(x)

 

 

n

Y(x)

 

n

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

3

 

 

4

 

 

5

6

1

0.1

1

x

x3

... ( 1)n

x2n 1

 

16

 

 

(2n 1)!

sin x

3!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

1

2

3

2

0.1

1

3

0.1

1

4

0.1

1

5

0.1

1

6

0.1

1

 

 

 

4

 

 

x

2

 

 

 

 

 

 

x

2n

 

 

 

 

 

1

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

2!

 

 

(2n)!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cos

 

 

 

 

 

 

cos n

 

 

1

 

 

 

 

 

 

4

 

x ...

 

 

 

 

4

xn

 

 

 

1!

 

 

 

n!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

x2

 

 

... ( 1)n

 

x2n

 

 

 

 

 

 

 

 

 

 

 

 

 

2!

 

 

 

 

 

 

 

 

 

 

(2n)!

 

1

3x

2

 

...

2n 1

x

2n

 

 

 

 

 

 

n!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

3

 

 

 

 

 

 

x

2n 1

 

 

 

 

 

x

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

3!

 

 

(2n 1)!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

10

12

8

14

8

 

 

 

 

 

6

 

 

 

 

e

x

e

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

x cos

cos(x sin

)

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

cos x

 

 

 

 

 

 

 

(1 2x

2

)e

x

2

 

 

 

 

 

 

 

 

 

 

e

x

e

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

15

2 ФУНКЦИИ

Цель работы: освоить использование функций при создании программ.

Задачи:

изучить принципы использования функций в языке C++;

изучить типы функций, способы передачи параметров функциям и типы возвращаемых функциями значений;

реализовать программу в соответствии с заданием на лабораторную работу.

2.1 Теоретическая часть 2.1.1 Основы программирования с использованием функций

Функция представляет собой именованное объединение группы операторов. Это объединение может быть вызвано из других частей программы. Функции являются основными строительными блоками программы C++.

В простейшем случае при помощи использования функций можно сократить размер программного кода, поместив в функцию любую последовательность операторов, встречающуюся в программе более одного раза. Такая функция не принимает и не возвращает никакого значения (ключевое слово void). Иллюстрация такого использования функций представлена на рисунке 2.1.

Рисунок 2.1 – Управление вызовами функции

16

Пример использования функции:

void starline(); //Прототип функции int main ()

{

starline(); //Вызов функции _getch();

return 0;

}

void starline()

{

for (int j = 0; j < 45; j++) //Тело функции cout << '*';

}

Перед обращением к функции необходимо указать в программе ее необходимые атрибуты (создать прототип функции).

Для более гибкого использования функций используется передача аргументов в функцию. Аргумент – это единица данных, например, переменная типа int. Аргументы позволяют функции оперировать различными значениями или выполнять различные действия в зависимости от переданных ей значений.

Пример с передачей аргумента в функцию:

void starline(char, int); //Прототип функции int main ()

{

starline('-', 10); //Вызов функции starline('+', 20); //Вызов функции _getch();

return 0;

}

void starline(char ch, int n)

{

for (int j = 0; j < n; j++) //Тело фукнции cout << ch;

cout << endl;

}

Когда выполнение функции завершается, она может возвратить значение программе, которая ее вызвала. Как правило, возвращаемое функцией значение, имеет отношение к решению задачи, возложенной на эту функцию. Следующий пример демонстрирует применение функции, получающей значения двух переменных и возвращающей их сумму.

17

float summa(float, float); //Прототип функции int main ()

{

cout << summa (4.3, 6.2); //Вызов функции _getch();

return 0;

}

float summa(float x, float y)

{

return x + y; //Тело функции

}

Такой механизм передачи аргументов в функцию называется передачей аргумента по значению. При этом вызываемая функция создает новые переменные, имеющие те же типы, что и передаваемые аргументы, и копирует значения аргументов в эти переменные. В языке C++ реализован механизм передачи аргументов по ссылке. Вместо того, чтобы передавать функции значение переменной, ей передается ссылка на эту переменную (фактически в функцию передается адрес переменной-аргумента в памяти). Таким образом, при передаче аргументов по ссылке, функция имеет прямой доступ к значениям аргументов. К достоинствам ссылочного механизма также относится возможность возвращения функцией программе не одного, а множества значений.

Следующий пример демонстрирует передачу параметров функции по ссылке.

void f(int&, float&); //Прототип функции int main ()

{

int x = 9; float y = 25;

f(x, y); //Вызов функции cout << x << endl;

cout << y; _getch(); return 0;

}

void f(int &i, float &j)

{

i = i * i; //Тело функции j = sqrt(j);

}

18

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

 

2.2 Варианты заданий к лабораторной работе

 

Задание 1.

 

 

Написать программу с использованием функций, реализующих

вариант индивидуального задания согласно таблице 2.1.

Таблица 2.1 – Варианты индивидуальных заданий

Задание

 

 

Даны действительные числа х1, у1, х2, у2, … ,х10, у10. Найти периметр

1

десятиугольника, вершины которого имеют соответственно коор-

 

динаты (х1, у1), (х2, у2), …, (х10, у10).

 

 

Даны действительные числа a, b, c, d, e – стороны пятиугольника.

2

Найти площадь пятиугольника.

 

 

Даны отрезки a, b, c и d. Для каждой тройки этих отрезков, из кото-

3

рых можно построить треугольник,

рассчитать площадь данного

 

треугольника. Определить функцию

Plo(x,y,z), рассчитывающую

 

площадь треугольника со сторонами x, y и z, если такой треугольник

 

существует.

 

 

Даны координаты вершин треугольника и координаты некоторой

4

точки внутри него. Найти расстояние от данной точки до ближай-

 

шей стороны треугольника.

 

 

Дано натуральное число n. Выяснить, является ли оно полным

5

квадратом. Определить функцию, позволяющую распознавать пол-

 

ные квадраты. Целое неотрицательное число n называется полным

 

квадратом, если найдется целое число m такое, что n=m2. Пусть n=

 

(p1)α (p2)β … (ps)γ – разложение числа n>1 на произведение простых.

 

Очевидно, что n – полный квадрат тогда и только тогда, когда все

 

степени α, β, …, γ – четные.

 

 

Дано натуральное число n. Выяснить, является ли оно простым.

6

Определить функцию, позволяющую распознавать простые числа.

 

Простое число – это натуральное число, имеющее ровно два раз-

 

личных натуральных делителя: единицу и само себя.

Задание 2.

Необходимо создать квадратную матрицу целых чисел, заполнить матрицу случайными числами в диапазоне 0–99 и написать функцию, реализующую индивидуальное задание (таблица 2.2). Фактические

19

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

Таблица 2.2 – Варианты индивидуальных заданий

Номер

 

Содержание задания

 

Иллюстрация

 

Отобразить главную и побочную диа-

 

1

гонали

симметрично

относительно

 

 

вертикальной оси.

 

 

 

 

 

 

 

 

 

 

На главной

диагонали

разместить

 

2

суммы элементов, которые лежат на

 

 

той же строке и том же столбце.

 

 

 

 

 

3

Отобразить матрицу симметрично от-

 

носительно главной диагонали.

 

 

 

 

 

 

 

 

 

 

 

Написать

функцию умножения

двух

 

4

матриц.

Предусмотреть

проверку

 

 

допустимости умножения матриц.

 

 

 

 

 

 

Удалить строку или столбец из

 

 

матрицы. Номер удаляемой строки или

 

 

столбца вводится с клавиатуры. После

 

 

удаления строки или столбца элементы

 

5

матрицы

сдвигаются.

Перед вводом

 

 

индекса

запросить пользователя

что

 

 

именно удаляется: строка или столбец.

 

 

Проверять

введенный

номер

на

 

 

допустимость.

 

 

 

 

 

 

 

6

Развернуть матрицу на 90o по часовой

 

стрелке.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

Соседние файлы в предмете Программирование на C++