Алгоритмизация и программирование. Учебное пособие для студентов направления подготовки 09.03.02 Информационные системы и технологии
.pdf
С учетом точности V = 0.001 необходимо взять только первые три слагаемых, тогда
TN ≈ 0.1827.
Обратите внимание, что необходимо учесть случай введения не из интервала [−1,1]. Если пользователь вводит неподходящее значение аргумента, программа должна выдать сообщение: «Invalid value entered x».
Текст программы к задаче 16.
------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<math.h>
int main()
{
float x, Sn; int j, n;
const float delta=0.001;
printf(" Enter the highest natural degree n = "); scanf("%d", &n);
printf(" Enter the value of variable x from the interval (-1,1): x = "); scanf("%f", &x);
if (fabs(x)>=1)
printf(" Invalid value entered x");
else
{
j=1; Sn=0;
while ((j<=n) && (fabs(pow(x,j))/j>delta))
{
Sn+=pow(-1,j+1)*pow(x,j)/j; j++;
}
printf(" The Sum is equal to %f", Sn);
}
return 0;
}
------------------------------------------------------------------------------------------------
В компиляторе языка С++ этот компьютерный код представлен на рис. 56.
71
Рис 56. Программный код задачи 16
Результат реализации программы на рис. 57:
Рис 57. Результат решения задачи 16
§ 3. Оператор перехода break и continue.
Для немедленного перехода к следующему оператору программы используются операторы перехода.
Оператор прерывания break в операторе выбора switch и в операторах цикла подразумевает выход из текущего блока и переход к следующему оператору. Его использование в циклических конструкциях целесообразно в случаях, когда проверять условие необходимо в середине тела цикла.
Оператор перехода continue (продолжение) применяется в случае, когда необходимо досрочно перейти к выполнению следующей итерации цикла, проигнорировав часть операторов тела цикла.
72
Задача 17. Введите целые числа и просуммируйте их до тех пор, пока сумма не станет больше 10.
Математическая модель и описание алгоритма решения. Пользователю предлагается вводить вещественные числа до тех пор, пока их сумма не превысит значение 10. На экран для удобства выводятся все значения и результат суммы, впервые превысившей значение 10, на которой процесс суммирования остановлен.
Текст программы к задаче 17.
------------------------------------------------------------------------------------------------
#include <stdio.h>
int main ()
{
int x, S; S=0; while (1)
{
if (S>10) break;
else
{
printf("\n Enter an integer value x = "); scanf("%d", &x);
S=S+x;
}
}
printf("\n S=%d", S);
return 0;
}
------------------------------------------------------------------------------------------------
В компиляторе языка С++ этот компьютерный код представлен на рис. 58.
73
Рис 58. Программный код задачи 17
Результат реализации программы на рис. 59:
Рис 59. Результат решения задачи 17
§ 4. Оператор безусловного перехода goto.
Оператор безусловного перехода goto меняет последовательность выполнения операторов и осуществляет переход по метке на выполнение операторов, следующих после неё.
Структура оператора goto: goto<метка>;
…
<метка>: <оператор>;
74
Однако старайтесь избегать использование данного оператора, так как он затрудняет читаемость программ и возможность их модификации.
§ 5. Оператор return.
Оператор перехода return (возврат) используется для выхода из функции. Он может возвращать вычисленное значение выражения или не возвращать никакого значения.
Структура оператора return: return[<выражение>];
Для возвращения значения необходимо после слова return указать значение или выражение, которое его вычисляет:
int main()
{int n;
…
return ++n;
}
§ 6. Пример решения задачи с использованием различных циклов.
Задача 18. Рассмотрим задачу вывода на экран чисел от 1 до 10 и их квадратов: а) с использованием цикла с предусловием; б) с использованием цикла с постусловием;
в) с использованием цикла for.
Математическая модель и описание алгоритма решения. Программа описывает вывод чисел от 1 до 10 и их квадратов, при этом пользователю не нужно ничего вводить.
Текст программы к задаче 18. а) Цикл с предусловием.
------------------------------------------------------------------------------------------------
#include <iostream> using namespace std;
int main()
{
cout << "\n"; while (n <= 10)
{
cout << "\t" << n << "\t" << n * n << "\n"; // выводим значения через табуляцию
++n;
}
}
------------------------------------------------------------------------------------------------
75
В компиляторе языка С++ этот компьютерный код представлен на рис. 60.
Рис 60. Программный код задачи 18 а)
Результат реализации программы на рис. 61:
Рис 61. Результат решения задачи 18
76
Текст программы к задаче 18. б) Цикл с постусловием.
------------------------------------------------------------------------------------------------
#include <iostream> using namespace std;
int main()
{
int n = 1; cout << "\n";
do
{
cout << "\t" << n << "\t" << n * n << "\n"; ++n;
}
while (n <= 10);
}
------------------------------------------------------------------------------------------------
В компиляторе языка С++ этот компьютерный код представлен на рис. 62.
Рис 62. Программный код задачи 18 б)
Результат реализации данной программы совпадает с результатом программы в задании а) и представлен на рис. 61.
77
Текст программы к задаче 18. в) Использование цикла for.
------------------------------------------------------------------------------------------------
#include <iostream> using namespace std;
int main()
{
cout << "\n"; int count = 0;
for (int i = 1; i <= 10; ++i)
{
cout << "\t" << i << "\t" << i * i << "\n"; count++;
}
cout << "\t Number of iterations: " << "iter = " << count<<"\n";
}
------------------------------------------------------------------------------------------------
В компиляторе языка С++ этот компьютерный код представлен на рис. 63.
Рис 63. Программный код задачи 18 в)
Результат реализации программы на рис. 64:
Рис 64. Результат решения задачи 18 в)
78
Задача 19. Выведите на экран таблицу умножения с использованием вложенного
цикла.
Математическая модель и описание алгоритма решения. Программа описывает вывод на экран таблицы умножения, при этом пользователю не нужно ничего вводить.
Текст программы к задаче 19.
------------------------------------------------------------------------------------------------
#include <iostream> using namespace std;
int main()
{
cout << "\n";
for (int i = 1; i <= 10; ++i)
{
cout << "\t";
for (int j = 1; j <= 10; ++j)
{
std::cout << i * j << "\t";
}
std::cout << "\n";
}
}
------------------------------------------------------------------------------------------------
В компиляторе языка С++ этот компьютерный код представлен на рис. 65.
Рис 65. Программный код задачи 19
79
Результат реализации программы на рис. 66:
Рис 66. Результат решения задачи 19
80
