Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗадачникПоТПиРнаЭВМ.doc
Скачиваний:
28
Добавлен:
11.03.2016
Размер:
1 Mб
Скачать

1.2. Операторы ветвления

Операторы ветвления используются в разветвленных алгоритмах и служат для выбора маршрута выполнения программы в зависимости от истинности или ложности некоторых условий [1, 17, 32]. Операторы ветвления называют ещё конструкциями принятия решений [1]. К операторам ветвления относятся следующие операторы: условные операторы if, if … else и оператор-переключатель switch.

Синтаксис условных операторов имеет вид [1]:

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

либо, если операторов, выполняемых при истинности выражения несколько, то

if (выражение) { оператор 1;

оператор 2;

…………

оператор N;

}

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

if (выражение == значение) оператор;

if (выражение != значение) оператор;

if (выражение <= значение) оператор;

Оператор if … else может иметь две ветви:

if (выражение) { оператор 1;

оператор 2;

}

else

{ оператор 3;

оператор 4;

}

Здесь вторая ветвь является альтернативой.

Оператор if … else допускает применение вложенных конструкций вида:

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

else if (выражение 2) оператор 2;

else if (выражение 3) оператор 3;

else if (выражение 4) { оператор 4;

…………

else if (выражение N) оператор N;

else

оператор по умолчанию;

где последняя ветвь else оператор по умолчанию; является необязательной. Количество уровней вложенности операторов if может быть любым. Однако при количестве таких вложенных конструкций, больших четырёх-пяти, программу становится трудно отлаживать [1].

Когда в программе нужно выбрать один из многочисленных вариантов, бывает целесообразным применять оператор-переключатель switch. Этот оператор называется ещё оператором множественного выбора [1].

Синтаксис оператора-переключателя switch имеет вид:

Switch (выражение)

{ case метка 1: оператор 1;

break; //Выход из оператора switch

{ case метка 2: оператор 2;

break;

…………

case метка N: оператор N;

break;

default:

оператор;

}

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

1.3. Алгоритмы, необходимые для написания программ

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

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

а) цикл с предусловием while (условие) . . . . Условие должно принимать значение «истина» при неправильном вводе данных. Например, необходимо ввести натуральное число n. Это осуществляется следующим циклом с предусловием:

cin >> n;

while (n <= 0)

{

cout << ”Введите натуральное число “;

cin >> n;

}

б) цикл с постусловием do . . . while (условие). Условие должно принимать значение «истина» при неправильном вводе данных. Например, необходимо ввести натуральное число n. Это осуществляется следующим циклом с постусловием:

do

{

cout << ”Введите натуральное число “;

cin >> n;

}while (n <= 0);

  1. Следует помнить о необходимости проверки аргументов функций, если область определения функции отлична от всего пространства.

  2. Еще один часто встречающийся алгоритм при вводе данных – необходимо ввести n элементов массива x[i], значения которого уникальны. Это можно осуществить с помощью следующего цикла с параметрами:

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

{

cout << "Введите x("<<i+1<<") = ";

cin >> x[i];

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

if(x[i] == x[j]) //Если встретился такой же элемент,

{ //необходимо его ввести вновь,

i--; //причем его индекс будет повторяться

break; //до тех пор, пока значение не будет

} //уникальным.

}

Листинг 1.1. Задана прямая линия ax+by+c=0, причем коэффициенты a и b не равны нулю (необходимо проверить при вводе). Определить, лежит ли точка с координатами (x0,y0) выше или ниже прямой. Вычислить y=ln(5+3 x) при x=d+hk, k=0, 1, 2, …, 10, если точка лежит выше прямой, и y=0, если точка лежит на прямой линии или ниже ее. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

//stdafx.h

#pragma once

#define WIN32_LEAN_AND_MEAN

#include <stdio.h>

#include <math.h> //Библиотека математических функций

#include <tchar.h>

#include <iostream>

using namespace std; //Использовать пространство имен std

//L1_1.cpp

#include “stdafx.h”

int main( )

{

setlocale(LC_CTYPE, “russian”); // Функции обработки символов

double x,y,a,b,c;

do //Контроль того, что a и b не равны нулю

{

cout << «Введите коэффициенты прямой a b c «;

cin >> a >> b >> c;

}while(a == 0 || b == 0);

cout << «Введите начальную точку и шаг «;

cin >> d >> h;

cout << ’\n’;

cout << « x y Результат\n\n»;

cout.precision(5); //Вывод 5 значащих цифр

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

{

x=d+i*h;

if(5+3*x <= 0)

{

cout.width(32); //Выводить в 32 позициях

cout << «Функцию вычислить нельзя\n»;

}

else

{

y=log(5+3*x);

if(a*x+b*y+c<0)

{

cout.width(4); //Выводить в 4 позициях

cout << x;

cout.width(8); //Выводить в 8 позициях

cout << y;

cout << « Точка лежит под прямой \n»;

}

else

{

cout.width(4); //Выводить в 4 позициях

cout << x;

cout.width(8); //Выводить в 8 позициях

cout << 0;

cout << « Точка лежит над прямой \n»;

}

}

}

return 0;

}

Результат работы программы листинга 1.1 приведен на рис. 1.1:

Рис. 1.1. Результат работы программы листинга 1.1

Упражнения

  1. Задана парабола y = ax2+bx+c. Определить, лежит ли точка с координатами (x0,y0) выше или ниже параболы. Вычислить y=logfx(3+x)3 при x= d+kh, k=0, 1, 2, …, 10; f, d, h некоторые числа, если точка лежит выше параболы, и y=0, если точка ниже параболы или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  2. Задана окружность x2+y2=R2. Определить, лежит ли точка с координатами (x0,y0) внутри или вне окружности. Вычислить y=при x= d+kh, k=0, 1, 2,…, 10; m, f, d, h некоторые числа, если точка лежит вне окружности, и y=x, если точка лежит внутри окружности или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  3. Задана прямая линия ax+by+c=0, причем коэффициенты a и b не равны нулю. Определить, лежит ли точка с координатами (x0,y0) выше или ниже прямой. Вычислить y=|log3(1+fx)| при x=d+hk, k=0, 1, 2, …, 10; f, d, h – некоторые числа, если точка лежит выше прямой, и y=0, если точка лежит на прямой линии или ниже прямой. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  4. Задана парабола y = ax2+bx+c. Определить, лежит ли точка с координатами (x0,y0) выше или ниже параболы. Вычислить y=|(f+mx2)S/2| при x= d+kh, k=0, 1, 2, …, 10; f, S, m, d, h – некоторые числа, если точка лежит выше параболы, и y=x, если точка ниже параболы или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  5. Определить, лежит ли точка с координатами (x0,y0) в первом квадранте. Вычислить y=lnm/2(1+x)3 при x= d+kh, k=0, 1, 2, …, 10; m, d, h – некоторые числа, если точка лежит в первом квадранте, и y=x2, если точка находится вне первого квадранта. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  6. Определить, лежит ли точка с координатами (x0,y0) между параболами y=-x2+1 и y=x2-1. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  7. Определить, лежит ли точка с координатами (x0,y0) между окружностями радиуса R и r, R >r, с центром в начале координат. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2 +x, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  8. Определить, лежит ли точка с координатами (x0,y0) внутри верхнего полукруга радиуса R с центром в начале координат, где R – константа. Вычислить приx= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  9. Определить, лежит ли точка с координатами (x0,y0) внутри квадрата с координатами вершин (a; a), (a; -a), (-a; -a), (-a; a), a – некоторая константа. Вычислить y= при x=d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2 +x, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  10. Определить, лежит ли точка с координатами (x0,y0) внутри нижнего полукруга радиуса R с центром в начале координат, где R – константа. Вычислить приx= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=0, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  11. Определить, лежит ли точка с координатами (x0,y0) внутри квадрата с координатами вершин (a; 0), (0; -a), (-a; 0), (0; a), где a – константа. Вычислить y= при x=d+kh, k=0, 1, 2, …, 10; с, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2 +2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  12. Определить, лежит ли точка с координатами (x0,y0) внутри квадрата с координатами вершин (a; a), (a; -a), (-a; -a), (-a; a), где a – константа. Вычислить y= при x=d+kh, k=0, 1, 2, …, 10; с, b, d, h – некоторые числа, если точка лежит в этой области, и y=сx2 +bx, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  13. Определить, лежит ли точка с координатами (x0,y0) в третьем квадранте. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a,b, d, h – некоторые числа, если точка лежит в третьем квадранте, и y=x2, если точка вне третьего квадранта. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  14. Определить, лежит ли точка с координатами (x0,y0) вне квадрата с координатами вершин (a; a), (a; -a), (-a; -a), (-a; a), где a – константа. Вычислить y= при x=d+kh, k=0, 1, 2, …, 10; с, b, d, h некоторые числа, если точка лежит в этой области, и y=сx2 +bx, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  15. Определить, лежит ли точка с координатами (x0,y0) вне квадрата с координатами вершин (a; 0), (0; -a), (-a; 0), (0; a), где a – константа. Вычислить y= при x=d+kh, k=0, 1, 2, …, 10; с, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2 +2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  16. Определить, лежит ли точка с координатами (x0,y0) вне верхнего полукруга радиуса R с центром в начале координат, где R – константа. Вычислить приx=d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2+ax, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  17. Определить, лежит ли точка с координатами (x0,y0) внутри полосы |y|<с, где c – константа. Вычислить приx=d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=xa, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  18. Определить, лежит ли точка с координатами (x0,y0) внутри полосы |x|<с, где c – константа. Вычислить приx=d+kh, k=0, 1, 2, …, 10; a, b, d, h некоторые числа, если точка лежит в этой области, и y=xb+1, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  19. Определить, лежит ли точка с координатами (x0,y0) между окружностями радиусов R и r, где R >r, с центрами в начале координат. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2 +x, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  20. Задана парабола y = ax2+bx+c. Определить, лежит ли точка с координатами (x0,y0) выше или ниже параболы. Вычислить y=при x= d+kh, k=0, 1, 2,…,10; f, m, d, h – некоторые числа, если точка лежит выше параболы, и y=x, если точка находится ниже параболы или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  21. Задана парабола y = ax2+bx+c. Определить, лежит ли точка с координатами (x0,y0) выше или ниже параболы. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; f, m, d, h некоторые числа, если точка лежит выше параболы, и y=0, если точка находится ниже параболы или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  22. Определить, лежит ли точка с координатами (x0,y0) внутри квадрата с координатами вершин (a; 0), (0; -a), (-a; 0), (0; a), где a – константа. Вычислить y= при x=d+kh, k=0, 1, 2, …, 10; с, b, d, h некоторые числа, если точка лежит в этой области, и y=x2 +2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  23. Определить, лежит ли точка с координатами (x0,y0) внутри верхнего полукруга радиуса R с центром в начале координат, где R – константа. Вычислить приx= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  24. Определить, лежит ли точка с координатами (x0,y0) во втором квадранте. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a,b, d, h – некоторые числа, если точка лежит в первом квадранте, и y=x2, если точка находится вне второго квадранта. Вывести на экран дисплея информацию, если функцию вычислить нельзя.

  25. Определить, лежит ли точка с координатами (x0,y0) внутри квадрата с координатами вершин (a; 0), (0; -a), (-a; 0), (0; a), где a – константа. Вычислить y= при x=d+kh, k=0, 1, 2, …, 10; с, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2 +2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.