Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика. Базовый курс. Ч.3. Основы алгоритмизации и про- граммирования в среде Visual C++ 2005.pdf
Скачиваний:
51
Добавлен:
05.02.2023
Размер:
3.81 Mб
Скачать

37

 

 

 

Т а б л и ц а 3

 

Русская система мер

 

 

 

 

Меры массы (веса)

1

пуд = 40 фунтов

0,016

т = 0,164 ц = 16,3805 кг

1

фунт = 32 лота = 96 золотников

0,410

кг = 409,512 г

1

лот = 3 золотника

12,7973 г

1

золотник

4,26575 г

 

Меры емкости (для жидкости)

1

бочка = 40 ведер

4, 920 гл (гекталитров)

1

ведро = 10 штофов = 20 бутылок

1,2299 дкл = 12,2994 л

1

штоф = 10 чарок

1,230

л

1

чарка

0,123

л

1

бутылка

0,615

л

 

Меры длины

 

1

миля = 7 верст

7,4676 км

1

верста = 500 саженей

1,0668 км

1

сажень = 3 аршина = 7 футов

2,1336 м

1

аршин = 16 вершков

0,711

м = 71,120 см

1

вершок

4,445

см = 44,45 мм

1

фут = 12 дюймов

0,305

м = 30,48 см

1

дюйм

2,540

см = 25,4 мм

4. ПРОГРАММА С ВЕТВЛЕНИЕМ

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

Структура выбора на С++ имеет вид:

if ( условие ) оператор 1; else оператор 2

Обратим внимание, что в отличие, например, от Паскаля в таком операторе отсутствует служебное словоthen и условие обязательно заключается в скобки. Оператор 1 исполняется в случае истинности условия. Оператор 2 – в случае ложности условия.

В С++ для использования математических функций необхо– димо подключать специальную библиотеку math.h.

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

sin x,

x <=0,

y ={cosx,

x >0.

38

Приведем сначала блок-схему алгоритма для этой задачи.

#include <iostream> #include <windows.h> #include <math.h> using namespace std; int main()

{double x,y; char str[256];

AnsiToOem(" Введи значение x ",str); cout<<str; cin>>x;

if (x<=0) y=sin(x); else y=cos(x); AnsiToOem("\n Функция y=",str); cout<<str<<y<<"\n";

return 0;}

Например, при x = 0 получим 0 (sin0 = 0), а при x = 3,14159265 (p радиан) будет получено –1 (т.к. cosp = –1).

В тех случаях, когда требуется выполнить несколько действий (в случае истинности или в случае ложности условия), то применяют фигурные скобки:

if (условие) {оператор 1_1; оператор 1_2} else {оператор 2_1; оператор 2_2}

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

39

//перестановка x,y; большее - вперед

#include <iostream> #include <windows.h> #include <math.h> using namespace std; int main()

{double x,y,z; char str[256]; AnsiToOem(" Введи значение x y ",str);

cout<<str; cin>>x>>y; if (x<y) {z=x; x=y; y=z;}

AnsiToOem("\n Итог x=",str); cout<<str<<x; AnsiToOem("\n Итог y=",str); cout<<str<<y<<"\n";

return 0;}

В результате, например, получим (рис. 8.12):

Рис. 8.12. Результат работы примера 4.2

Обратите внимание, что здесь использована сокращенная форма записи условного оператора: if (условие) оператор.

Условие может быть и весьма сложным. Здесь допускается конъюнкция условий (одновременное выполнение условий) – условия связываются при помощи &&, дизъюнкция условий (альтернативное выполнение условий) – обозначается | | и инверсия условий (обозначается знаком ! ).

Пример 4.3. Выяснить, принадлежит ли точка с координатами (х, y) кольцу с внешним радиусом r1 и внутренним r2.

// принадлежит ли точка кольцу от r2 до r1 #include <iostream>

#include <windows.h> using namespace std; int main()

{ double x,y,r1,r2; char str[256],str1[256]; AnsiToOem("Введи x,y,r1,r2 ",str);

40

cout<<str; cin>>x>>y>>r1>>r2;

AnsiToOem("\n Точка принадлежит кольцу \n", str); AnsiToOem("\n Точка НЕ принадлежит кольцу \n", str1); if ((x*x+y*y)<r1 && (x*x +y*y)>r2) cout<<str;

else cout<<str1;

return 0;}

Если зададим: x = 1, y = 1, r1 = 3, r2 = 1, получим «принадлежит», а если x = 2, y = 2, r1 = 2, r2 = 1, получим «не принадлежит».

Практические задания

Составить программу для решения нижеприведенных задач а) в режиме Win32 Console Application

б) в режиме CLR Console Application, задавая данные непосредственно в тексте программы

4.1. Даны числа a, b, c . Проверить, выполняется ли неравенство a<b<c. Вывести об этом сообщение.

4.2. Даны три действительных числа a, b, c. Выбрать из них те, которые принадлежат интервалу (1, 3).

4.3. Даны числа x,y (x ¹ y). Меньшее из них заменить полусуммой, а большее – их удвоенным произведением.

4.4. Найти наибольшее для трех заданных чисел a, b, c.

4.5. Выяснить, существует ли треугольник с длинами сторонx, y, z (в треугольнике большая сторона меньше суммы двух других сторон).

4.6. На окружности с центром в точке (x0, y0) задана дуга с координатами начальной (xn, yn) и конечной (xk, yk) точек. Определить номера четвертей окружности, в которых находятся начальная и конечная точки.

4.7. Даны координаты точки (x, y). Выяснить, принадлежит ли эта точка области, указанной на рис. 8.13, а.

4.8. Даны координаты точки(x,y). Выяснить, принадлежит ли эта точка области, указанной на рис. 8.13, б.

4.9. Даны координаты точки (x, y). Выяснить, принадлежит ли эта точка области, указанной на рис. 8.13, в.

4.10. Даны координаты точки (x, y). Выяснить, принадлежит ли эта точка области, указанной на рис. 8.13, г.

4.11. Даны координаты точки (x, y). Выяснить, принадлежит ли эта точка области, указанной на рис. 8.13, д.

4.12. Даны координаты точки (x, y). Выяснить, принадлежит ли эта точка области, указанной на рис. 8.13, е.

41

Рис. 8.13

4.13. Даны действительные положительные числаa, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.

4.14. Даны действительные числа x1, x2, x3, y1, y2, y3. Выяснить, является ли треугольник с вершинами (x1, y1), (x2, y2), (x3, y3) прямоугольным?

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

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

4.17. Написать программу, которая переводит время из минут и секунд в секунды. Извне вводятся минуты и секунды. В программе предусмотреть проверку на правильность введенных данных(только положительные, кроме того, число минут <=60 и число секунд

<=60 )

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