- •Нижегородский государственный университет им. Н.И. Лобачевского
- •Оглавление
- •Предисловие
- •Глава 1. Вычисление значений функций
- •1.1. Операторы циклов
- •1.2. Операторы ветвления
- •Когда в программе нужно выбрать один из многочисленных вариантов, бывает целесообразным применять оператор-переключатель switch. Этот оператор называется ещё оператором множественного выбора [1].
- •Switch (выражение)
- •1.3. Алгоритмы, необходимые для написания программ
- •Глава 2. Суммирование рядов
- •Глава 3. Позиционная запись числа
- •Глава 4. Делители целого числа
- •5.1. Сортировка вставкой
- •5.2. Метод пузырька
- •5.3. Сортировка выбором
- •5.4. Быстрая сортировка
- •Глава 6. Работа с файлами. Построение массивов без повторений
- •6.1. Работа с файлами
- •6.2. Построение массивов без повторений
- •Глава 7. Обработка последовательности символов
- •7.1. Алгоритм выделения слова из строки
- •7.2. Выбор слов, подходящих под шаблон
- •7.3. Перевод прописных символов в строчные
- •Глава 8. Побитовые операции
- •Глава 9. Преобразование и построение матриц
- •Содержимое файла “input.Txt”
- •Глава 10. Структуры
- •Выделение памяти под объект coat
- •Содержимое файла "input.Txt".
- •Содержимое файла "outout.Txt"
- •Содержимое файла "input.Txt"
- •11. Динамические структуры данных
- •11.1. Односвязные списки
- •11.2. Очереди
- •11.3. Стеки
- •Содержимое файла “input.Txt”
- •Содержимое файла “input.Txt”
- •Список литературы
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. Алгоритмы, необходимые для написания программ
Обратим внимание на то, что при написании программ необходимо иметь в виду следующие алгоритмы, которые встречаются и при вычислении значений функций.
Ограничение на входные данные приводит к необходимости проверки при их введении. Для этого можно использовать следующие циклы.
а) цикл с предусловием while (условие) . . . . Условие должно принимать значение «истина» при неправильном вводе данных. Например, необходимо ввести натуральное число n. Это осуществляется следующим циклом с предусловием:
cin >> n;
while (n <= 0)
{
cout << ”Введите натуральное число “;
cin >> n;
}
б) цикл с постусловием do . . . while (условие). Условие должно принимать значение «истина» при неправильном вводе данных. Например, необходимо ввести натуральное число n. Это осуществляется следующим циклом с постусловием:
do
{
cout << ”Введите натуральное число “;
cin >> n;
}while (n <= 0);
Следует помнить о необходимости проверки аргументов функций, если область определения функции отлична от всего пространства.
Еще один часто встречающийся алгоритм при вводе данных – необходимо ввести 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
Упражнения
Задана парабола y = ax2+bx+c. Определить, лежит ли точка с координатами (x0,y0) выше или ниже параболы. Вычислить y=logfx(3+x)3 при x= d+kh, k=0, 1, 2, …, 10; f, d, h – некоторые числа, если точка лежит выше параболы, и y=0, если точка ниже параболы или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Задана окружность x2+y2=R2. Определить, лежит ли точка с координатами (x0,y0) внутри или вне окружности. Вычислить y=при x= d+kh, k=0, 1, 2,…, 10; m, f, d, h – некоторые числа, если точка лежит вне окружности, и y=x, если точка лежит внутри окружности или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Задана прямая линия 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, если точка лежит на прямой линии или ниже прямой. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Задана парабола 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, если точка ниже параболы или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) в первом квадранте. Вычислить y=lnm/2(1+x)3 при x= d+kh, k=0, 1, 2, …, 10; m, d, h – некоторые числа, если точка лежит в первом квадранте, и y=x2, если точка находится вне первого квадранта. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) между параболами y=-x2+1 и y=x2-1. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) между окружностями радиуса R и r, R >r, с центром в начале координат. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2 +x, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) внутри верхнего полукруга радиуса R с центром в начале координат, где R – константа. Вычислить приx= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (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, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) внутри нижнего полукруга радиуса R с центром в начале координат, где R – константа. Вычислить приx= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=0, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (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, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (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, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) в третьем квадранте. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a,b, d, h – некоторые числа, если точка лежит в третьем квадранте, и y=x2, если точка вне третьего квадранта. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (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, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (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, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) вне верхнего полукруга радиуса R с центром в начале координат, где R – константа. Вычислить приx=d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2+ax, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) внутри полосы |y|<с, где c – константа. Вычислить приx=d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=xa, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) внутри полосы |x|<с, где c – константа. Вычислить приx=d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=xb+1, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) между окружностями радиусов R и r, где R >r, с центрами в начале координат. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2 +x, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Задана парабола y = ax2+bx+c. Определить, лежит ли точка с координатами (x0,y0) выше или ниже параболы. Вычислить y=при x= d+kh, k=0, 1, 2,…,10; f, m, d, h – некоторые числа, если точка лежит выше параболы, и y=x, если точка находится ниже параболы или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Задана парабола y = ax2+bx+c. Определить, лежит ли точка с координатами (x0,y0) выше или ниже параболы. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; f, m, d, h – некоторые числа, если точка лежит выше параболы, и y=0, если точка находится ниже параболы или на ней. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (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, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) внутри верхнего полукруга радиуса R с центром в начале координат, где R – константа. Вычислить приx= d+kh, k=0, 1, 2, …, 10; a, b, d, h – некоторые числа, если точка лежит в этой области, и y=x2, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (x0,y0) во втором квадранте. Вычислить y= при x= d+kh, k=0, 1, 2, …, 10; a,b, d, h – некоторые числа, если точка лежит в первом квадранте, и y=x2, если точка находится вне второго квадранта. Вывести на экран дисплея информацию, если функцию вычислить нельзя.
Определить, лежит ли точка с координатами (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, если точка находится вне области. Вывести на экран дисплея информацию, если функцию вычислить нельзя.