Алгоритмы и программы. Язык С++ : учебное пособие для СПО [Елена Александровна Конова] (pdf) читать постранично, страница - 19

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

записывается в скобках.
Полная форма.
if(Логическое_выражение)

Ос н о в ы п р о г р а м м и р о ва н и я н а я з ы к е C + +

95

 Оператор1;
else
 Оператор2;
Здесь «Логическое_выражение» имеет тот же смысл,
что и ранее, а «Оператор1" или «Оператор2" — это, в общем

случае, блок.
Выполнение.
1. Вычисляется значение логического выражения.
2. Если оно не равно 0, выполняется «Оператор1",
а если оно равно 0, выполняется «Оператор2" (или ничего
в первой форме).
Пример 2.18. Первая форма условного оператора.
Стоимость товара равна произведению цены на количество. Если есть скидка, то стоимость уменьшается на
величину discount. Вычислить стоимость.
pay=cost*count;
// общая формула
// если есть скидка, то стоимость
if(discount!=0)

// уменьшается
pay=pay–(pay*discount)/100;
// вывод pay в любом случае
printf("Стоимость = %6.2f\n", pay);

Пример 2.19. Вторая форма условного оператора.
Оплата труда работника — это произведение количества отработанных часов на стоимость часа. Если отработано более 40 ч, то за каждый час работодатель платит
в полтора раза больше.
if(hour= 40
// печать одинакова
printf("К оплате %6.2f рублей.\n", pay);

Пример 2.20. Использование блоков в составе условного оператора.
Если необходимо вывести на экран число оплаченных
часов и значение суммы к оплате, тогда для каждой ветви
нужна своя собственная печать.

96

Гл а в а 2

if(hour 20.
Блок-схема алгоритма решения задачи приведена
в примере 1.2 (глава 1).
void main(void)
{
float a,b,c;
float x,y;
printf("Введите параметры функции");
scanf("%f%f%f",&a,&b,&c);
printf("Введите аргумент функции");
scanf("%f",&x);
if(x\n ");
scanf("%d", &N);
// инициализация переменной S нулем обязательна
S=0;
// к нулю готовимся прибавить первое слагаемое
n=1;
do
{
   S+=n; // тело цикла
   n++; // приращение параметра цикла
} while(neps);
// еps достаточно мало
printf("Слагаемых %5.0f, Сумма %f8.5", n, S);
} // End of main

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

245

За д ач и и у п р аж н е н и я

Пример 4.3. Пусть требуется вычислить сумму ряда
по формуле
S=x+

x x x
x
+ + + ... + + ...
2 3 4
n

Очевидно, что значение суммы будет зависеть от значения x. Добавить сложность к этому алгоритму может
одно из следующих условий.
1. Вычислить суммы для различного числа слагаемых
(n1, n2, n3 и т. д.) в арифметическом цикле или цикле,
управляемом событием.
2. Вычислить суммы для различных значений x, например, для x ∈ [x0, xn] с шагом ∆x, или вводимых с клавиатуры.
3. Вычислить суммы для различных степеней точности, например, для ε ∈ [ε0, εn] в итерационном цикле.
Рассмотрим второй случай. Сумма заново вычисляется для каждого значения x, поэтому цикл вычисления
суммы должен быть внутренним, а цикл изменения переменной x внешним. Управляющей переменной внутреннего цикла является номер слагаемого n ∈ [1, N], ее шаг
равен 1. Число повторений N должно быть известно, его
можно ввести. Внешним циклом управляет переменная
x, которая изменяется по закону арифметического цикла,
пусть для определенности x ∈ [0; 1], шаг 0,1.
void main(void)
{
float x;
// параметр внешнего цикла
float n;
// параметр внутреннего цикла
float S;
int N; // число слагаемых, включенных в сумму
printf("Вычисление суммы чисел натурального ряда.\n");
printf("Введите число слагаемых>1\n");
scanf("%d", &N);
// управление внешним циклом
for(x=0; x