Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_ДЗ1.doc
Скачиваний:
7
Добавлен:
26.08.2019
Размер:
162.82 Кб
Скачать

Текст программы

/*--------------------------------------

вычисление корней квадратного уравнения

---------------------------------------*/

#include <stdio.h>

#include <conio.h>

#include <math.h>

main()

{ float a,b,c,x1,x2,D;

//заставка

printf("\nВычисление корней уравнения вида:\n ax^2+bx+c=0");

//ввод исходных данных

printf("\nВведите коэффициенты \n a="); scanf("%f", &a);

printf(" b="); scanf("%f", &b);

printf(" c="); scanf("%f", &c);

//вычисление

if (a==0) printf("\nПрограмма не решает линейные уравнения");

else

{

D=b*b-4*a*c;

if (D<0) printf("\n Нет действительных корней");

else

{

x1=(-b-sqrt(D))/2/a;

x2=(-b+sqrt(D))/(2*a);

printf("\nКорни уравнения: х1=%f x2=%f ",x1,x2);

}

}

printf("\nДля выхода нажмите любую клавишу …");

getche();

return 0;

}

В этой программе два условных оператора, вложенные друг в друга. Первый из них проверяет условие равенства нулю коэффициента а. Если это условие верно, то выполняется один единственный оператор – вывод на экран сообщения («Программа не решает линейных уравнений»). Если же условие неверно (ветвь else), то производится вычисление корней уравнения. При этом нужно выполнить не один, а много операторов, поэтому все они объединяются в составной оператор с помощью фигурных скобок. После вычисления дискриминанта D снова проверяется условие с помощью вложенного условного оператора (if (D<0) ). В ветви else этого условия - также составной оператор, объединяющий операторы вычисления и вывода на экран значений корней уравнения х1 и х2.

2.5. Использование оператора множественного выбора

Рассмотренный выше условный оператор if предоставлял возможность выбора одного из двух направлений выполнения программы. В случае, если возможных направлений более двух, удобно использовать оператор множественного выбора switch. Этот оператор позволяет организовать мультиветвление.

Пример 2.5. Калькулятор.

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

Постановка задачи

Исходными данными для этой задачи являются значения двух чисел a и b, с которыми будут выполняться действия; a и b любые действительные числа. Значения a и b вводятся с клавиатуры.

Выходные данные - результат вычислений, который выводится на экран монитора.

Метод решения

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

Возможных действий (направлений выполнения программы) – четыре, следовательно, в этой задаче удобно воспользоваться оператором варианта.

Блок-схема алгоритма

Текст программы

#include <stdio.h>

#include <conio.h>

#include <math.h>

main()

{float a,b, res; char k;

printf ("\nКальсулятор");

// Ввод исходных данных

printf ("\nВвeдите числo a=");

scanf ("%f",&a);

printf ("\nВвeдите число b=");

scanf ("%f",&b);

printf ("\nВыберите действие");

printf ("\n+ Сложение");

printf ("\n- Вычитание");

printf ("\n* Умножение");

printf ("\n/ Деление\n");

k=getche();

// Вычисления

switch (k)

{

{ case '+': res=a+b; break;

case '-': res=a-b; break;

case '*': res=a*b; break;

case '/': res=a/b; break;

} default:

printf ("\n Неверно выбрано действие. Нажми любую клавишу");

getche();

return 0;

}

//вывод результата

printf ("\n %f %c %f = %f",a,k,b,res);

printf("\nДля выхода нажмите любую клавишу …");

getche();

return 0;

}

Для выбора арифметического действия используется символьная переменная k. С помощью оператора switch значение переменной k сравнивается с константами, обозначающими действия. Для выполнения выбирается тот вариант, константа которого совпадает со значением k. После выполнения действия выбранного варианта стоит оператор break, который передает управление сразу в конец оператора switch. Когда введенное значение переменной k не соответствует ни одной из констант, управление передается ветви с меткой default. В этой ветви на экран выводится сообщение о неверном выборе действия и программа завершает работу (оператор return).

2.6. Совместное использование условного оператора и оператора выбора

Пример 2.6. Месячный расход электроэнергии

Некоторое непрерывное производство ежесуточно расходует W квт/ч электроэнергии. Для заданного месяца текущего года требуется вычислить общий расход электроэнергии R.

Постановка задачи

Исходными данными для этой задачи являются номер месяца j и суточный расход энергии W (вводятся с клавиатуры). Кроме того, необходимо задавать год, для которого производятся вычисления (задается в программе в виде константы).

Выходные данные – расход электроэнергии R за выбранный месяц в квт/ч. Значение R выводится на экран монитора.

Метод решения

Для вычисления расхода электроэнергии за месяц необходимо суточный расход энергии W умножить на количество дней в заданном месяце: R = W d. Количество дней в месяце d зависит от номера месяца (см. календарь). Кроме того, в феврале может быть либо 28 дней либо 29 (если год високосный) дней. Номера високосных годов кратны четырем.

Блок-схема алгоритма

Текст программы

#include <stdio.h>

#include <conio.h>

main()

{const god=2006;

float W, R;

int j;

//заставка

printf("\nПРОГРАММА ВЫЧИСЛЕНИЯ РАСХОДА

ЭЛЕКТРОЭНЕРГИИ ЗА ОПРЕДЕЛЕННЫЙ МЕСЯЦ ГОДА” );

//ввод исходных данных

printf("\n Введите расход энергии за 1 день");

scanf("%f", &W);

printf("\n Введите номер месяца");

scanf("%d", &j);

switch (j) {

{case 1:case 3:case 5: case 7: case 8: case 10:case 12: R=31*W; break;

case 4:case 6:case 9: case 11: R=30*W; break;

case 2 : if (god%4) R=28*w; else R=29*W;break;

}

default: printf ("\n нет такого месяца ");return 0;

}

//вывод результата

printf ("\n за %d месяц израсходовано %f кВт ", j, R);

printf("\nДля выхода нажмите любую клавишу");

getche();

return 0;

}

В этой программе выбор формулы для вычисления осуществляется с помощью оператора switch. В одну из ветвей оператора варианта вложен условный оператор if (определение количества дней в феврале для високосного и не високосного года). Кроме того, у оператора варианта есть ветвь default (случай, когда введенное число j не является номером месяца года). В операторе if в качестве условия проверяется значение выражения, вычисляющего остаток целочисленного деления (эта операция обозначается знаком %). Номер года задан в виде целой константы.