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

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

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

Разделителями в потоке ввода служат пробелы, табуляции и разделители строк. Чте-

ние числа прекращается, если встречается первый нечисловой символ, а строки – до первого

разделителя. Функция форматного вывода данных printf() возвращает число выведенных символов или отрицательное значение в случае ошибки. Количество аргументов должно быть равным количеству их спецификаторов.

Приведем пример использования функции ввода/вывода данных.

Задача 3. Введите, а затем выведите на экран три величины: целое и вещественное числа, символ.

(Тест. Провести проверку: целое число 10, вещественное – 5.6 и символ ^=/). Математическая модель и описание алгоритма решения. В данной задаче пользовате-

лю предлагается ввести целое число, вещественное число и символ. После чего, введённые значения необходимо вывести на экран. В решении нет проверки, правильно ли пользователь вводит значения переменных – соответствуют ли они объявленному типу.

С учетом использования директивы #include <stdio.h> программа будет выглядеть следующим образом.

Текст программы к задаче 3.

--------------------------------------------------------------------------------------------------

#include <stdio.h>

int main()

{

int i; float x; char ch[21]; printf("\n Enter an integer: ");

scanf("%d", &i);

// ввод целого числа

printf(" Enter a real number: ");

scanf("%f", &x);

// ввод вещественного числа

printf(" Enter a symbol: ");

 

scanf("%s", &ch);

// ввод символа

printf(" Printing numbers and symbols: %d; %f; %s", i, x, ch); // вывод на экран

return 0;

}

--------------------------------------------------------------------------------------------------

В компиляторе языка С++ этот компьютерный код представлен на рис. 18.

41

Рис 18. Программный код задачи 3 с директивой #include <stdio.h>

Результат реализации программы на рис. 19:

Рис 19. Результат решения задачи 3

В данной задаче использование директивы #include <iostream> упростит запись кода.

Текст программы к задаче 3.

--------------------------------------------------------------------------------------------------

#include <iostream> using namespace std;

int main()

{

int i; float x; char ch[21]; cout << "\n Enter an integer: ";

cin >> i;

// ввод целого числа

cout << " Enter a real number: ";

cin >> x;

// ввод вещественного числа

cout << " Enter a symbol: ";

cin >> ch;

// ввод символа

cout << " Printing numbers and symbols: " << i << " " << x << " " << ch; // вывод

return 0;

}

--------------------------------------------------------------------------------------------------

42

В компиляторе языка С++ этот компьютерный код представлен на рис. 20.

Рис 20. Программный код задачи 3 с директивой #include <iostream>

Результат реализации программы на рис. 21:

Рис 21. Результат решения задачи 2

Рис 21. Результат решения задачи 3

Приведем ещё один пример использования функции ввода/вывода данных.

В данной задаче использование директивы #include <iostream> предпочтительнее для записи компьютерного кода, чем директива #include <stdio.h>.

Задача 4. Вычислите возраст по году рождения.

Математическая модель и описание алгоритма решения. В данной задаче пользователю предлагается ввести год его рождения, а затем текущий год. Искомый возраст получается результатом разности текущего года и введённого года рождения пользователя.

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

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

43

Текст программы к задаче 4.

--------------------------------------------------------------------------------------------------

#include <iostream> using namespace std;

int main()

{

int x, y, z;

cout << "\n Enter your year of birth: "; cin >> x;

cout << "\n Enter current year: "; cin >> y;

z = y - x;

cout << "\n Your age: " << z;

return 0;

}

--------------------------------------------------------------------------------------------------

В компиляторе языка С++ этот компьютерный код представлен на рис. 22.

Рис 22. Программный код задачи 4

Результат реализации программы на рис. 23:

Рис 23. Результат решения задачи 4

44

§ 3. Стандартные математические функции.

Стандартные математические функции существуют для облегчения программирования математических вычислений; функции работают со значениями, представленными в форме с фиксированной и плавающей точкой. Основные математические функции объявлены в include-файле <math.h> или<stdlib.h>. Приведем перечень наиболее часто применяемых математических функций в языке программирования С++:

abs(x) – вычисляет абсолютное значение x (аргумент целого типа);

asin(x), acos(x), atan(x) – вычисляет arcsin x, arccos xили arctg x (результат в радианах);

atan2(y,x) – вычисляет arctg(y/x) (результат в радианах);

ceil(x) – находит целую часть x;

sin(x), cos(x) – вычисляет sin x или cos x (аргумент в радианах);

tan(x) – вычисляет tg x (аргумент в радианах);

exp(x) – вычисляет экспоненциальную функцию;

fabs(x) – вычисляет абсолютное значение x (аргумент вещественный);

floor(x) – находит наибольшее целое, которое меньше или равно x;

fmod(x,y) – находит остаток (с плавающей точкой) от деления x на у;

log(x) – вычисляет натуральный логарифм х;

log10(x) – вычисляет десятичный логарифм х;

modf(x,&n) – разделяет х на целую (n), дробную (возвращаемое значение) части;

pow(x,y) – вычисляет х в степени y;

pow10(x) – вычисляет 10 в степени x;

sqrt(x) – находит квадратный корень из х.

Функции консольного ввода/вывода объявляются в include-файле <conio.h>:

cgets() (или cputs()) читает строку с консоли (или записывает на консоль);

getch() (или putch()) – читает символ с консоли (или записывает на консоль).

Далее приведем примеры программ, в которых используются математические функ-

ции.

Задача 5. Вычислите гипотенузу в прямоугольном треугольнике по теореме Пифаго-

ра.

Математическая модель и описание алгоритма решения. В данной задаче катеты ,

45

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

ляется по теореме Пифагора

= √ + ,

а затем выводится на экран.

Тип переменных , и с, используемых в задаче, – вещественные.

Текст программы к задаче 5.

--------------------------------------------------------------------------------------------------

#include <iostream> using namespace std; #include <math.h>

int main()

{

float a, b, c;

cout << "\n Enter the legs of the triangle (separated by a space): "; cin >> a >> b;

c = sqrt(pow(a,2) + pow(b,2));

cout << "\n The hypotenuse of a triangle is equal to " << c;

return 0;

}

--------------------------------------------------------------------------------------------------

В компиляторе языка С++ этот компьютерный код представлен на рис. 24.

Рис 24. Программный код задачи 5

Результат реализации программы на рис. 25:

46

Рис 25. Результат решения задачи 5

Задача 6. Переведите время в секунды.

(Тест. Провести проверку: 25 часов 31 минута 11 секунд).

Математическая модель и описание алгоритма решения. Пользователю предлагают вести время в формате: часы минуты секунды. После чего на экран выводится время в секундах.

Проверяем решение задачи на тестовых значениях. Вычисляем время в секундах для 25 часов 31 минуты 11 секунд. Необходимо перевести часы и минуты в секунды и прибавить

к заданным секундам:

∙ 3600 + ∙ 60 + ,

подставляем значения для = 25, = 60, = 11:

25 ∙ 3600 + 31 ∙ 60 + 11 = 91871 (сек.)

Текст программы к задаче 6.

--------------------------------------------------------------------------------------------------

#include <stdio.h> #include <math.h>

int main()

{

int a, b, c;

printf(" Enter hours "); scanf("%d", &a); printf(" Enter minutes "); scanf("%d", &b); printf(" Enter seconds "); scanf("%d", &c);

c += a * 3600 + b * 60;

printf(" Total number of seconds %d", c);

return 0;

}

--------------------------------------------------------------------------------------------------

47

В компиляторе языка С++ этот компьютерный код представлен на рис. 26.

Рис 26. Программный код задачи 6

Результат реализации программы на рис. 27:

Рис 27. Результат решения задачи 6

Задача 7. Вычислите значения функции двух переменных

по значениям её аргументов и /. ? = ( + /) − − / (Тест. Провести проверку: = 25, / = 3).

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

Проведём проверку выполнения программы на тестовых значениях.

Если ввести значения: = 25, / = 3, то функция

? = (25 + 3) − 25 − 3 = 784 − 625 − 9 = 150.

48

Текст программы к задаче 7.

--------------------------------------------------------------------------------------------------

#include <stdio.h> #include <math.h>

int main ()

{

float x, y, f;

printf(" Enter value x="); scanf("%f", &x);

printf(" Enter value y="); scanf("%f", &y);

f = pow((x+y), 2)-pow(x,2)-pow(y,2); printf("%f", f);

return 0;

}

--------------------------------------------------------------------------------------------------

В компиляторе языка С++ этот компьютерный код представлен на рис. 28.

Рис 28. Программный код задачи 7

Результат реализации программы на рис. 29:

Рис 29. Результат решения задачи 7

49

Глава 5. УСЛОВНЫЕ КОНСТРУКЦИИ

§ 1. Условный оператор if.

Условный оператор if используется в случае разветвления процесса вычислений на два направления. Он работает по принципу: проверяется некоторое условие и, в зависимости от результата проверки, выполняется то или иное действие.

Оператор if может быть использован в сокращенной или полной форме (табл. 6).

Табл. 6 Формы условного оператора if

Сокращенная форма

Полная форма

 

 

 

If (<условие>)

If (<условие>)

<оператор_1>;

<оператор_1>;

else

 

<оператор_2>;

Блок-схема сокращенной формы условного оператора приведена на рис. 30, полной – на рис. 31.

<условие>

+

 

 

<условие>

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оператор_2

 

Оператор_1

 

 

Оператор_1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 30 Сокращенная форма

Рис. 31 Полная форма

В структуре оператора <условие> – это логическое выражение. Если оно истинно (равно 1), то переходим к <оператору_1>, стоящему после условия. Если условие ложно (равно 0), то в сокращенном варианте переходим к оператору, следующему за условным оператором, а в полном – вначале к <оператору_2>, стоящему после else, а затем продолжаем выполнять действия, описанные после условного оператора.

Обратите внимание, если необходимо выполнить несколько операторов, то такую группу заключают в фигурные скобки ({ }).

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]