Пример выполнения лабораторного задания № 2

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

Обратите внимание на отступы вправо, принятые при записи программ.

Условный оператор специально используется в двух форматах: с применением и отсутствием альтернативной части (else).

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{ /* задание переменной перечисляемого типа */

enum {def,o1,o2,o3,o4} otr; /* номер отрезка, def – выбор по умолчанию */

float x,y;

printf(" Лабораторная работа N 2 вариант 27 \n");

printf("Тема: Ветвление программы \n");

printf(" Задание: Используя оператор if, составить программу \n");

printf("для вычисления составной функции вида: \n");

printf("1> sqr(x) при x от -2.0 до 1.0\n");

printf("2> sqrt(x) при x от 1.0 до 2.0\n");

printf("3> y=sqrt(x-2)+sqrt(2) при x от 2.0 до 3.0\n");

printf("4> y=1+sqrt(x-1) при x от 3.0 до 4.0\n");

printf("указать отрезок, где находится введенный с клавиатуры \n");

printf("аргумент и вывести значение функции в данной точке. \n");

printf(" Автор: Путилов Александр Петрович, гр. Пд-11 \n");

printf("Введите x=");

scanf("%f",&x); printf("\n");

/* Выбор отрезка */

otr=def;

if ((x>=-2.0) && (x<1.0)) otr=o1;

else if ((x>=1.0) && (x<2.0)) otr=o2;

if ((x>=2.0) && (x<3.0)) otr=o3;

if ((x>=3.0) && (x<=4.0)) otr=o4;

/* Вычисление значения функции */

switch (otr)

{

case o1: y=pow(x,2); break;

case o2: y=sqrt(x); break;

case o3: y=sqrt(x-2)+sqrt(2); break;

case o4: y=1+sqrt(x-1); break;

default: printf("Число вне диапазона."); getch(); exit(1);

}

printf ("Промежуток %d: y= %3.2f; ",otr,y);

return 0;

}

Обратите внимание, что в примере использована еще одна библиотека stdlib. Часть функций этой библиотеки уже известна по математической библиотеке, а другие функции надо будет изучать по мере необходимости.

Новым является использование перечисляемого типа данных (enum). Объявление перечисления задает тип переменной перечисления и определяет список именованных констант, называемый списком перечисления. Значением каждого имени списка является некоторое целое число. Переменная типа перечисления может принимать значения одной из именованных констант списка. Именованные константы списка имеют тип int. Поэтому переменной перечисляемого типа можно присвоить любое значение типа int. Фатальной ошибки при этом не будет, только предупреждение (Assign int to enum) о том, что переменной перечисляемого типа присвоено целое значение. Допускаете ли вы такую вольность или нет, решайте сами, так как последствия могут быть неожиданными.

При использовании операторов ветвления программы (if, else), несколько существенных особенностей, отличающих синтаксис языков Паскаль и Си и дающих наибольшее число ошибок:

- в языке Си результатом логической операции служит целое число, любое целое число, не равное 0, интерпретируется как истина;

- поразрядные (битовые) логические операторы: &, |, ^, ~;

- логические операторы: &&, ||,!;

- логическое выражение после слова if обязательно должно быть в круглых скобках;

- выражение перед альтернативной частью (else) должно заканчиваться точкой с запятой;

- оператор проверки на равенство обозначается двойным знаком «равно», а проверка на неравенство – «восклицательный знак равно».

Для того чтобы начертить блок-схему алгоритма вычисления составной функции и прочих алгоритмов в курсе АЯиОП, познакомьтесь с ГОСТ 19.003-80.doc «СХЕМЫ АЛГОРИТМОВ И ПРОГРАММ. ОБОЗНАЧЕНИЕ УСЛОВНЫЕ ГРАФИЧЕСКИЕ»

   
 
 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: