Разработка текста программы

Программа начинается с включения файлов:

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

в которых находятся описания функций ввода - вывода и математических функций соответственно.

Далее открываем главную функцию:

int main(void)

Включаем описания переменных (см. п.5.2):

double x,y; double a=12.5, b=1.3; double c=14.1, d=2.7; double t1, t2; double ax;

Вводятся значения для переменных x и y:

printf("Введите x, y >"); scanf("%lf %lf",&x,&y);

Далее вычисляется первое промежуточное значение:

ax=a*x;

и первый результат:

t1=(b*log(ax+b)/a+d*log(y*x+d)/y)/c;

Вычисляется второй промежуточный результат:

ax=sqrt((c-b)*(c+b))*tan(ax);

и вычисляется второй окончательный результат:

t2=log((ax+b)/(ax-b))/2/a/b;

Полученные результаты выводятся на экран:

printf("t1 = %lg\n",t1); printf("t2 = %lg\n",t2);

Отладка программы

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

Аккуратный формат таблицы достигается несколькими запусками программы с последующим выравниванием столбцов по результатам запуска.

Задание 2. При отладке программы можно проверять правильность выполнения каждой операции. Для этого сложные операторы-выражения, разбиваются на последовательность операторов-выражений, в каждом из которых выполняется только одна операция. Результат каждой такой операции выводится на экран или отслеживается в пошаговом режиме.

Результаты работы программы

Задание 1.

При работе программы на экран было выдано следущее:

1. Введите: название, школу, количество, площадь > Тодайдзи Т 220 368.8 2. Введите: название, школу, количество, площадь > Якусидзи С 50 54.7 3. Введите: название, школу, количество, площадь > Дайаедзи Д 10 12.2
------------------------------------------------------------------------|Буддийские монастыри Японии периода Нара ||------------------------------------------------------------------------|| Название--------- | Школа --| Количество|Площадь земли|| | | монахов -- | (га) ||----------------------|------------|----------------|--------------------|| Тодайдзи | Т | 220 | 368.8 || Якусидзи | С | С | 50 | 54.7 || Дайаедзи | Д | Д | 10 | 12.2 ||------------------------------------------------------------------------|| Примечание: Т - Тендай; С - Сингон; || Д - Дзедзицу |-------------------------------------------------------------------------

Задание 2.

При работе программы на экран было выдано следущее:

Введите x, y >3.3 1.1t1 = 0.348897t2 = 0.0133405 Задание для продвинутых: ** 1. Создать интерфейс позволяющий выбрать один из вариантов расчета параметров, которые будут заданы в виде таблицы (выбор должен осуществляться по порядковому номеру и по типу выражения):
П/п Тип Выражение
1 Логарифм t=1/(b^3)*(ln(y/x – a^2*x^2/(2*y^2)))
2 Корень t=1/(b^0,5)*(y^0,5/x – a^0,5*x^2/(2*y^0,5)))
3 Тригонометрия t=cos(bx+0,5)*sin(y/x – a^0,5*x^2)

Приложение 1. Базовые типы данных языка С

Название типа Пояснения Диапазон значений
short Краткое целое число -128... 127
unsigned short Краткое целое число без знака 0... 255
int Целое число -32768... 32767
unsigned int Целое число 0... 65535
long Длинное целое число -230... 230-1
unsigned long Длинное целое число без знака 0... 231-1
char Один символ символы кода ASCII
char[ ] Строка  
float Число с плавающей точкой 3.4 10-38... 3.4 10+38
double Число с плавающей точкой двойной точности 1.7 10-308... 1.7 10+308

Приложение 2. Некоторые функции стандартного ввода-вывода

Функции стандартного ввода - вывода описаны в файле stdio.h.

printf() - форматный вывод на экран:

int printf(char *format, <список вывода>);

Первый параметр является символьной строкой, которая задает спецификации формата. Остальные параметры - перечисление переменных и выражений, значения которых выводятся. Каждая спецификация формата имеет вид (параметры в квадратных скобках необязательны):

%[flags][width][.prec][F|N|h|l]type
type - тип спецификации
d или i целое десятичное число со знаком
u десятичное число без знака
x целое 16-ричное число без знака
f число с плавающей точкой
e число в E-форме
g число с плавающей точкой или в E-форме
c один символ
s строка
% символ %
flags - признак выравнивания:
+ или пусто выравнивание по правому краю
- выравнивание по левому краю
width - целое число - общая ширина поля. Если это число начинается с цифры 0, вывод дополняется слева нулями до заданной ширины. В заданную ширину входят все символы вывода, включая знак, дробную часть и т.п.
prec - целое число, количество знаков после точки при выводе чисел с плавающей точкой
F - соответственный элемент списка вывода является дальним указателем
N - соответственный елемент списка вывода является близким указателем
l - соответствующий елемент списка вывода является long int или double

scanf() - форматный ввод с клавиатуры:

int scanf(char *format, <список ввода>);

Первый параметр является символьной строкой, которая задает спецификации формата (см. функцию printf()). Остальные параметры - перечисление адресов переменных, в которые вводятся данные. В этом списке перед именами всех переменных, кроме тех, которые вводятся по спецификации типа %s, должен стоять символ &.

putchar() - вывод одного символа на экран:

int putchar(int ch);

Параметр функции - код символа, который выводится. При успешном выполнении функция возвращает этот же код, при неуспешном - EOF.

getchar() - ввод одного символа с клавиатуры:

int getchar(void);

Функция возвращает код введенного символа.

puts() - вывод строки символов на экран:

int puts(char *string);

Параметр функции - указатель на начало той строки, из которой выводятся данные. Функция возвращает количество выведенных символов.

gets() - ввод строки символов с клавиатуры:

char *gets(char *string);

Параметр функции - указатель на начало той строки, в которую вводятся данные. Функция возвращает тот же самый указатель.

Приложение 3. Некоторые стандартные математические функции.

Стандартные математические функции находятся в файле math.h.

abs - абсолютное значение целого числа - |x|

int abs(int x);

labs - абсолютне значення "длинного" целого числа - |x|:

long labs(long x);

fabs - абсолютное значение числа с плавающей точкой - |x|:

double fabs(double x);

sqrt - извлечение квадратного корня:

double sqrt(double x);

pow - возведение в степень:

double pow(double x, double y);

cos - косинус - cos x (здесь и далее x задается в радианах):

double cos(double x);

sin - синус - sin x:

double sin(double x);

tan - тангенс - tg x:

double tan(double x);

acos - арккосинус - arccos x:

double cos(double x);

asin - арксинус - arcsin x:

double sin(double x);

atan - арктангенс - arctg x:

double atan(double x);

atan2 - арктангенс - arctg x/y:

double atan2(double x, double y);

exp - експонента:

double exp(double x);

log - натуральный логарифм - ln x:

double log(double x);

log10 - десятичный логарифм - log10x:

double log10(double x);

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



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