Основные теоретические сведения. Внимание! Выполнение данной лабораторной работы предполагает, что студенты в полном объеме изучили материал

 

Внимание! Выполнение данной лабораторной работы предполагает, что студенты в полном объеме изучили материал, изложенный в лабораторной работе №1. Если у вас возникнут вопросы касательно создания, компиляции и запуска на выполнение программ на Си++, вы должны повторно просмотреть материал лабораторной работы №1.

 

Переменные и оператор присваивания

 

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

Имя у переменной постоянно и неизменно, значение же может меняться.

Касательно имен переменных существуют определенные правила. Вот те правила, с которыми вы столкнетесь в данном лабораторном практикуме.

Правило 1. Имена переменных должны иметь смысловое значение.

Правило 2. Имена переменных должны начинаться с обозначения типа и каждое слово с большой буквы.

Для обозначения типа переменной перед ее именем ставят определенную приставку. Весь набор приставок обозначающих типы переменных называют «венгерской кириликой». В данном лабораторном практикуме вы в основном будете использовать переменные типов int, double, char и bool. Вот соответствующая им венгерская кирилика и примеры объявления переменных:

 

Обозначение Описание Пример объявления переменных
n Тип int int nIndex;
d Тип double double dSpeed;
c Тип char char cInputSimbol;
sz Строка символов char szCalcString[32];
b Тип bool bool bKey;

 

Допускается

Давать переменным имена i, n, j и т.п. если эти переменные используются в операторах циклов.

Давать переменным имена Temp, Buffer, String, Len и т.п. если их видимость не более 10 строк.

Рекомендуется

Длина имени переменной не более 30 символов;

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

 

Итак, пусть у нас есть целочисленная переменная с именем «nExample».

В языке Си++ Все переменные надо объявлять! Фактически, объявление – это резервирование места в памяти машины под конкретную переменную. Это необходимо потому, что иначе, если бы переменные вводились просто использованием имени переменной, и мы вдруг допустили бы ОПЕЧАТКУ, например:

 

nIdnex = 1;

 

вместо

 

nIndex = 1;

 

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

Вот примеры объявления переменных различных типов.

 

Тип данных   Объявление
Целая переменная int nNum;
Вещественная переменная double dDigit;
Один символ char cSimbol;
Логическая переменная bool bKey;

 

В нашем случае переменную nExample необходимо объявить следующим образом:

 

int nExample;

 

Значение переменных можно изменять при помощи операции присваивания. В языке Си++ она обозначается знаком равенства. Например, запись

 

nExample = 10;

 

означает присвоить переменной nExample значение 10. Такая строчка является простейшим оператором. В конце операторов ставится точка с запятой.

Рассмотрим запись:

 

nExample = nExample + 3;

 

Это не уравнение. Если рассматривать эту строку как математическое уравнение, оно не имеет решения. На самом деле тут написано:

1) «взять значение переменной nExample»;

2) «прибавить к нему 3»;

3) «положить новое значение в переменную nExample».

В правой части значение переменной может встречаться несколько раз:

 

nResult = nExample*nExample - nExample + 1;

 

Тут есть две переменные:

nResult – для результата;

nExample – уже имеющая некоторое значение.

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

Объявим переменные скорость, расстояние и время:

 

double dSpeed, dDistance, dTime;

 

Проведем начальную инициализацию:

 

dDistance = 3.5;

dTime = 1.3;

 

А теперь произведем собственно расчет:

 

dSpeed = dDistance / dTime;

 

Арифметические операторы

 

Стандарт ANSI для языка Си++ определяет более 40 операторов. С помощью арифметических операторов +, -, *, /, % вы можете выполнять простые арифметические операции, которые обычно выполняются и в других языках программирования.

 

 

Оператор   Краткое описание
+ Суммирует два операнда
- Вычитает из первого операнда второй
* Умножает два арифметических операнда
/ Делит первый арифметический операнд на второй
% Оператор взятия модуля, определяет остаток от деления первого целочисленного операнда на второй

 

Все арифметические операторы являются бинарными, т.е. они всегда работают с двумя операндами. Операторы + и – имеют одинаковый приоритет, который ниже приоритета операторов *, / и %. Арифметические операции одного приоритетного уровня выполняются слева направо. Вы можете изменить порядок выполнения операторов с помощью скобок.

Внимание! В языке Си++ для операции деления существует следующее правило:

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

Это означает, что в результате выполнения строки:

 

double dResult = 3 / 2;

 

переменная dResult будет иметь значение 1.

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

 

double dResult = 3. / 2;

 

либо:

 

double dResult = 3 / 2.;

 

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

 

double dResult = double( 3 ) / 2;

 

означает, что целое число 3 следует рассматривать как вещественное число 3.00.

Следующие записи операции деления эквивалентны предыдущей.

 

double dResult = (double) 3 / 2;

double dResult = 3 / double( 2 );

double dResult = 3 / (double) 2;

 

Математические функции

 

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

 

#include <math.h>

 

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

Функция fabs(x) вычисляет абсолютное значение x, то есть определяет модуль |x|.

Прототип:

double fabs(double x);

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

 

cout << fabs(5);

Вывод:

 

cout << fabs(-5);

Вывод:

cout << fabs( -3.2 / 2 );

Вывод:

1.6

 

cout << fabs((6 – 10) / 2);

Вывод:

 

Функция sqrt(x) возвращает квадратный корень аргумента х.

Прототип:

double sqrt(double x);

Ограничения:

Аргумент должен быть положительным числом.

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

 

cout << sqrt(4);

Вывод:

 

Функция pow(x, y) возводит х в степень у.

Прототип:

double pow(double x, double y);

Ограничения:

Нельзя возводить 0 в отрицательную степень.

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

 

cout << pow( 2, 3);

Вывод:

 

Функция exp(x) возводит число е в степень x.

Прототип:

double exp(double x);

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

 

double x = 2.302585093, y;

y = exp( x );

printf( "exp( %g ) = %g\n", x, y );

Вывод:

10.000000

 

Функции sin(x), cos(x), tan(x) соответственно рассчитывают синус, косинус и тангенс x.

Прототип:

double sin(double x);

double cos(double x);

double tan(double x);

Примечание:

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

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

 

double pi = 3.1415926535;

double x;

x = tan( pi / 4 );

printf( "tan( %g ) = %g\n", pi/4, x );

Вывод:

tan( 0.785398 ) = 1.000000

 

Функции asin(x), acos(x), atan(x) соответственно рассчитывают арксинус, арккосинус и арктангенс x.

Прототип:

double asin(double x);

double acos(double x);

double atan(double x);

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

 

double x, y;

cout << "Enter a real number between -1 and 1: " ;

cin >> x;

y = asin( x );

printf( "Arcsine of %g = %g\n", x, y );

y = acos( x );

printf( "Arccosine of %g = %g\n", x, y );

Вывод:

Enter a real number between -1 and 1: .32696

Arcsine of 0.326960 = 0.333085

Arccosine of 0.326960 = 1.237711

 

Оператор if

Оператор if-else используется для принятия решения. Рассмотрим схему оператора:

if (условие)

{

операторы 1;

}

else

{

операторы 2;

}

 

Фигурные скобки в каждой ветви можно опустить, если оператор только один. Ветвь else не обязательна.

Сначала вычисляется условие (точнее, условное выражение), и, если оно истинно (т.е. отлично от нуля), выполняются операторы 1. Если условие ложно (т.е. его значение равно нулю) и существует else-связь, то выполняются операторы 2.

В языке Си++ существуют следующие условные операторы:

 

Оператор Проверяемое условие
> Больше
>= Больше либо равно
< Меньше
<= Меньше либо равно
== Равно
!= Не равно

 

Обратите внимание на условный оператор ==. Не путайте его с оператором присваивания =. Так, например, запись:

 

if ( a = 2 )

b = a;

 

означает вовсе не «если переменная а равна 2, то присвоить переменной b значение переменной а». На самом деле эта запись читается так: «если результат выполнения операции присваивания а = 2 есть истина, то присвоить переменной b значение переменной а». Так как результат выполнения операции присвоения всегда истина, в приведенном примере независимо от текущего значения переменной а всегда будет выполняться строка b = a. Если же вы хотите проверить условие не равно ли значение переменной а двум, то оператор if следует записать следующим образом:

 

if ( a == 2 )

b = a;

 

Ниже приведены примеры использования оператора if:

 

int a = 1;

int b = 2;

if ( a > b )

cout << a;

else

cout << b;

Вывод:

 

int a = 2;

if ( a == 0 )

cout << “inf”;

else

cout << 1. / a;

Вывод:

0.5

 

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

Разберем на примере листинга 12, как определиться со знаком числа с помощью конструкция if-else.

 

Листинг 12

/*Ваше число положительное или отрицательное? */

 

#include <iostream.h>

void main( void )

{

int a;

cout << "Vvedite luboe chislo:\n";

cin >> a;

if (a>=0)

{

cout << "Vawe chislo " << a << " polozitelnoe\n";

}

else

{

cout << "Vawe chislo " << a << " otricatelnoe\n";

}

}

 

 

Например, введем 96. Сначала программа проверит первую часть условия после if. Если а (т.е. ваше число 96) ≥ 0 (а оно больше нуля), значит на экран будет выведено: Vawe chislo 96 polozitelnoe. Но если вы введете при запуске программы число -96, то первое условие -96 ≥ 0 не выполнится и программа перейдет во вторую часть условия после else и выполнит ее оператор, то есть выведет вам на экран: Vawe chislo -96 otricatelnoe.

В листинге 13 приведен пример использования оператора if для реализации простейшего калькулятора.

 

Листинг 13

/*Калькулятор с оператором if*/

 

#include <math.h>

#include <iostream.h>

void main( void )

{

double dNumber1, dNumber2;

char cOperator;

 

cout << "Calculation:\n";

cout << "Input: number_1 operator number_2\n";

 

cin >> dNumber1 >> cOperator >> dNumber2;

 

if ( cOperator == '+' ) cout << "= " << dNumber1 + dNumber2 << '\n';

else if ( cOperator == '-' ) cout << "= " << dNumber1 - dNumber2 << '\n';

else if ( cOperator == '*' ) cout << "= " << dNumber1 * dNumber2 << '\n';

else if ( cOperator == '/' ) cout << "= " << dNumber1 / dNumber2 << '\n';

else cout << "Unknown operator\n\n";

}

 

 

Несмотря на то, что программа в листинге 13 достаточно компактна, не рекомендуется оформлять программный код подобным образом. Одними из критериев оценки качества программного кода является удобочитаемость и понятность. С точки зрения этих критериев, условные операторы из листинга 13 следовало бы оформить следующим образом:

 

if ( cOperator == '+' )

{

cout << "= " << dNumber1 + dNumber2 << '\n';

}

else if ( cOperator == '-' )

{

cout << "= " << dNumber1 - dNumber2 << '\n';

}

else if ( cOperator == '*' )

{

cout << "= " << dNumber1 * dNumber2 << '\n';

}

else if ( cOperator == '/' )

{

cout << "= " << dNumber1 / dNumber2 << '\n';

}

else cout << "Unknown operator\n\n";

 

Вы можете возразить, что объем программного кода увеличился более чем в 3 раза. Это верно. Но в свою очередь возросла понятность программы. Теперь гораздо легче отследить ее логику и, в случае необходимости, найти ошибку.

 

Логические операторы

 

Язык Си++ располагает тремя логическими операторами: И, ИЛИ и НЕ.

Логические операторы И и ИЛИ являются бинарными. В отличие от них логический оператор НЕ является унарным и результат присваивает своему же операнду. Значения операндов интерпретируются как логические 0 и 1.

 

Оператор Назначение
&& оператор логического И
|| оператор логического ИЛИ
! оператор логического НЕ

 

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

 

if (( x > 0) && ( x < 1)) // Если 0 < х < 1

{ … // (то есть, если x > 0 И x < 1)

}

 

if (!( x > 0)) // Если х <= 0

{ … // (то есть, если x НЕ > 0)

}

 

if (( x > 0) || ( y > 0)) // Если 0 < х ИЛИ 0 < у

{ …

}

 

Оператор switch

 

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

 

switch (переменная)

{

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

{

операторы;

}

break;

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

{

операторы;

}

break;

default: операторы;

}

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

В листинге 13 была приведена программа-калькулятор, использующая оператор if. Теперь рассмотрим вариант этой программы с переключателем switch:

 

Листинг 14

/*Калькулятор с оператором switch*/

 

#include <math.h>

#include <iostream.h>

void main( void )

{

double dNumber1, dNumber2;

char cOperator;

 

cout << "Calculation:\n";

cout << "Input: number_1 operator number_2\n";

 

cin >> dNumber1 >> cOperator >> dNumber2;

 

switch ( cOperator )

{

case '+': cout << "= " << dNumber1 + dNumber2 << '\n'; break;

case '-': cout << "= " << dNumber1 - dNumber2 << '\n'; break;

case '*': cout << "= " << dNumber1 * dNumber2 << '\n'; break;

case '/': cout << "= " << dNumber1 / dNumber2 << '\n'; break;

 

default: cout << "Unknown operator" << '\n'; break;

}

}

 

 

Инструкция break вызывает немедленный выход из переключателя switch. Поскольку выбор ветви case реализуется как переход на метку, то после выполнения одной ветви case, если ничего не предпринять, программа провалится вниз на следующую ветвь. Инструкции break и return – наиболее распространенные средства выхода из переключателя. Инструкция break используется также для принудительного выхода из циклов while и for .

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

Добрый вам совет: даже в конце последней ветви (после default в нашем примере) помещайте инструкцию break, хотя с точки зрения логики в ней нет никакой необходимости. Но эта маленькая предосторожность спасет вас, когда однажды вам потребуется добавить в конец еще одну ветвь case.

 

Цикл while

 

Цикл while (до тех пор, пока истинно) оформляется следующим образом:

 

while( условие )

{

тело цикла;

}

 

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

Ниже приведены варианты организации циклов с использованием оператора while:

 

int a;

while( 1 ) // Пример бесконечного цикла

{

a = a + 1;

}

 

int a = 1;

while( a < 10 )

{

a = a + 1;

}

 

А теперь вспомните листинг 12, в котором вы определяли знак числа. Вам приходилось для каждого нового числа каждый раз запускать программу, что согласитесь неудобно. Гораздо лучшее решение – предоставить оператору возможность управлять выходом из программы. Это легко реализовать, поместив операторы тела функции main (листинг 12) в тело бесконечного цикла while (листинг 15). При этом возникает возможность определять знаки любых ваших чисел столько раз, сколько вы пожелаете. Для выхода из цикла используется специальный оператор break, который будет выполнен, в случае, если оператор введет число 0.

 

Листинг 15

/*Определение знаков чисел с использованием цикла while*/

 

#include <iostream.h>

void main( void )

{

while(true)

{

int a;

cout << "Vvedite luboe chislo ili 0 dlya vihoda:\n";

cin >> a;

if ( a > 0 )

{

cout << "Vawe chislo " << a << " polozitelnoe\n";

}

if ( a < 0 )

{

cout << "Vawe chislo " << a << " otricatelnoe\n";

}

if ( a == 0 )

{

break;

}

}

}

 

 

Цикл for

 

Этот цикл является просто иной записью одного из вариантов цикла while, то есть это его частный случай. Он служит обычно для выполнения определенного действия несколько раз, не «пока истинно условие», а «выполнить N раз».

У такого цикла есть «переменная цикла» и «счетчик повторений».

Рассмотрим цикл while и аналогичный ему цикл for.

 

int i;

i = 0; // Начальная инициализация

while ( i < b )

{

тело_цикла;

i = i + 1; // Увеличение счетчика цикла

}

 

int i;

for ( i = 0; i < b; i++ )

{

тело_цикла;

}

 

Это два совершенно идентичных цикла по переменной i. Тело каждого цикла выполняется b раз, при этом переменная i изменяется от 0 до (b – 1).

Прежде всего, обратите внимание на наличие трех групп в заголовке цикла for( ; ; ). Они разделены точкой с запятой. В первой группе заголовка могут быть перечислены через запятую операторы, которые следует выполнить до входа в цикл, то есть один раз. Это своего рода инициализация цикла. Во второй части указывается условие продолжения цикла. В третьей группе перечисляются операторы, выполняемые в конце цикла. После заголовка следует тело цикла.

Следует не пожалеть времени и хорошо запомнить последовательность выполнения операторов при реализации цикла:

Шаг 1. Один раз выполняются операторы первой части заголовка.

Шаг 2. Проводится проверка условия (вторая часть заголовка) и выход из цикла в случае его нарушения

Шаг 3. Выполняются операторы тела цикла.

Шаг 4. Выполняются операторы третьей части заголовка.

Шаг 5. Переход к шагу 2.

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

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

Обратите внимание на запись i++ в описанном выше цикле for. Эта операция называется инкремент и фактически означает «увеличить на единицу». Помимо инкремента есть также операция декремента означающая «уменьшить на единицу». Декремент соответственно записывается как i--.

Используя декремент, приведенный цикл for можно переписать следующим образом:

 

int i;

for ( i = b; i > 0; i-- )

{

тело_цикла;

}

 

Тело этого цикла также будет выполнено b раз, но при этом переменная i изменяется от b до 1.

 

Инструкция return

 

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

Пример использования инструкции return приведен ниже.

 

int a, b;

double dResult;

cin >> a >> b; // Ввод исходных данных

if ( b == 0 ) // Проверка деления на нуль

{

cout << “Delenie na nul!\n” // Ввод сообщения об ошибке

return; // Выход из программы

}

else

{

dResult = double(a) / b; // Расчет частного

}

 

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

 


Решение типовых задач

 

Задача 1. Даны х, у. Вычислить:

 

 

Решение:

 

Листинг 16

/*Лабораторная работа №2. Задача 1*/

 

#include <math.h>

#include <iostream.h>

 

void main( void )

{

// Объявление переменных

double dInput_x, dInput_y; // dInput_x, dInput_y – аргументы

double dResult ; // dResult – результат работы функции main

double b, с; // a, b – вспомогательные переменные

 

cout << “Input x, y\n”; // Запрос ввода переменных х и у

 

cin >> dInput_x >> dInput_y; // Ожидание ввода данных

 

b = sin( fabs( dInput_x*dInput_x + dInput_x + 1 )); // Расчет числителя

b = pow( b, 3 ); //

 

c = sqrt( dInput_y*dInput_y + dInput_x*dInput_x ); // Расчет знаменателя

 

dResult = fabs( b / c ); // Расчет первого слагаемого

 

// Расчет общей суммы

dResult = dResult + exp(( dInput_x + dInput_y ) / ( dInput_x*dInput_y ));

 

cout << dResult << ‘\n’; // Вывод результата

}

 

 


Задача 2. Даны х, у. Вычислить:

 

Решение:

 

Листинг 17

/*Лабораторная работа №2. Задача 2*/

 

#include <math.h>

#include <iostream.h>

#include <stdio.h>

 

void main( void )

{

// Объявление переменных

double dInput_x, dInput_y; // dInput_x, dInput_y – аргументы

double dResult ; // dResult – результат работы функции main

 

cout << “Input x, y\n”; // Запрос ввода переменных х и у

 

cin >> dInput_x >> dInput_y; // Ожидание ввода данных

// Рассчет результата

if (( dInput_x >= 0 ) && ( dInput_x <= 1 ))

{

dResult = sqrt( dInput_x * dInput_x + pow( dInput_y, 2 ));

}

else if ( dInput_x < dInput_y )

{

dResult = dInput_x;

}

else

{

dResult = dInput_y;

}

 

printf( “a = %g\n”, dResult );

}

 

 


Задача 3. Дано целое число n. Вычислить

Решение:

 

Листинг 18

/*Лабораторная работа №2. Задача 3*/

 

#include <math.h>

#include <iostream.h>

 

void main( void )

{

int nNumber; // Объявление переменной для числа n

 

cout << "Input number: "; // Запрос ввести число n

cin >> nNumber; // Ввод числа n

// Проверка того, что введено

// положительное число

if ( nNumber < 0 )

{

cout << "Wrong number!";

// Выход из программы в случае

return; // ввода неверных данных

}

 

double dResult = 0; // Объявление и инициализация переменной

// для хранения результата

int i = 1; // Объявление и инициализация переменной

// для цикла

while ( i <= nNumber ) // Условия продолжения цикла

{

// Расчет

dResult = dResult + 1. / pow( 2, i );

i++; // Инкремент переменной i

}

 

cout << "Result: " << dResult << '\n'; // Вывод результата на экран

}

 

 


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

 

Варианты заданий к задаче 1

 

Задание
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Известна длина окружности. Найти площадь круга и его радиус.
Вычислить расстояние между двумя точками с координатами x1, y1 и x2, y2
Найти площадь равнобочной трапеции с основаниями a, b и высотой h

 

Варианты заданий к задаче 2

 

Задание
Даны действительные числа x, y, z. Получить max(x, y, z), min(x, y, z)
Даны действительные числа x, y, z. Проверить выполняется ли неравенство x<y<z
Даны действительные числа x, y, z. Удвоить их если , и заменить их абсолютными значениями, если это не так
Даны x, y. Вычислить
Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так
Даны два действительных числа. Заменить первое число нулем, если оно меньше или равно второму, и оставить числа без изменения в противном случае
Даны три действительных числа. Выбрать из них те, которые принадлежать интервалу (1,3)
Даны x, y ( ). Меньшее из этих двух чисел заменить их полусуммой, а большее – удвоенным произведением.
Даны три действительных числа. Возвести в квадрат те из них, значения которых не отрицательны.
Даны действительные положительные числа x, y, z. Выяснить существует ли треугольник с длинами сторон x, y, z.
Даны координаты точки М и вершины прямоугольника. Определить принадлежит ли точка М прямоугольнику.
Даны три действительных числа. Определить сколько среди них положительных.
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны x, y. Вычислить
Даны координаты точки М. Определить находится ли точка внутри области ограниченной окружностью
Дано натуральное число х. Определить кратно ли это число 2, 3, 5.
Даны натуральные числа х, у. Определить кратно ли число х числу у.
Даны целые числа x, y, z. Определить какие из них четные.

 

Варианты заданий к задаче 3

 

Задание
Дано натуральное число n. Вычислить
Дано натуральное число n. Вычислить
Дано натуральное число n. Вычислить
Даны действительное число а и натуральное число n. Вычислить
Даны действительное число а и натуральное число n. Вычислить
Даны действительное число а и натуральное число n. Вычислить
Даны действительное число а и натуральное число n. Вычислить
Вычислить
Дано действительное число х. Вычислить
Даны действительные число х, а и натуральное число n. Вычислить
Дано действительное число а. Найти среди чисел первое большее а.
Дано действительное число а. Найти такое наименьшее n, что
Даны действительное число х и натуральное число n. Вычислить
Даны действительное число х и натуральное число n. Вычислить
Дано натуральное число n. Сколько цифр в числе n?
Дано натуральное число n. Чему равна сумма его цифр n?
Дано натуральное число n. Найти первую цифру числа n
Даны натуральные числа n, m. Получить сумму m последних цифр числа n.
Дано натуральное число n. Выяснить входит ли цифра 3 в запись числа n2
Дано натуральное число n. Поменять порядок цифр числа n на обратный.

 

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

 

1) Вы хотите использовать в вашей программе математические функции sin, cos и т.д. Ваши действия?

2) Какие математические функции языка Си++ вы знаете?

3) Приведите примеры использования оператора ветвления if.

4) Приведите примеры использования оператора цикла for и аналогичные примеры с использованием оператора while.

5) Вы хотите осуществить в вашей программе контроль вводимой информации. Ваши действия?

 

 


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

 

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

 

Задачи:

1) Изучить вопросы создания и использования функций в языке Си++.

2) Изучить вопросы создания и использования статических массивов в языке Си++.

3) Разработать программу, использующую двумерные массивы.