Отчет по лабораторной работе №1.
Тема:
«Циклические вычислительные процессы».
Дисциплина:
«Языки программирования и методы трансляции».
Цель:
Ознакомление с методами работы организации циклических вычислений при использовании языка программирования С.
Задача:
Вычислить и вывести на экран в виде таблицы значения функции F
на интервале от X
нач
до Хкон
с шагом dX
.
,
где а,
b
,
c
– действительные числа. Функция F
должна принимать действительное значение, если выражение
(Ац
МОД2 Вц
) И НЕ (Ац
ИЛИ Сц
)
не равно нулю, и целое значение в противном случае. Через Ац
, Вц
и Сц
обозначены целые части значений a
,
b
,
c
, операции НЕ, И, ИЛИ и МОД2 (сложение по модулю два) – поразрядные. Значения a
,
b
,
c
, Хнач
, Хкон
,
dX
ввести с клавиатуры.
Листинг
:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main ()
{ clrscr ();
float Xn,Xk,Dx,F,a,b,c,k=0.000001;
printf("\n Введите диапазон и шаг изменения аргумента: \n");
scanf ("%f%f%f",&Xn,&Xk,&Dx);
printf ("\n Введитеa,b,c: \n");
scanf ("%f%f%f",&a,&b,&c);
int Fk,a1,b1,c1;
a1=(int)a;
b1=(int)b;
c1=(int)c;
printf ("| X | F |\n");
float X=Xn;
while(X<=Xk)
{ if (fabs(X)<k && fabs (b)>k) F=a*(X+c)*(X+c)-b;
else if (fabs(X)<k && fabs(b)<k)
if (fabs (c)>k) F=X-a/-c;
else { printf ("| %5.2f | /0 |\n",X);
goto kon;
}
else if (fabs (c)>k) F=a+X/c;
else { printf ("| %5.2f | /0 |\n",X);
goto kon;
}
if ((a1^b1)&(~(a1|c1))!=0) { Fk=int(F);
printf ("| %5.2f | %d |\n",X, Fk);
}
else printf("| %5.2f | %5.2f |\n",X,F );
kon: X+=Dx;
}
getch();
return 0;
}
Тестовая проверка.
Входные данные 1:
Хn=1.2, Хк=4.5, Dx=1, а=3.4,b=2.5,c=0.5
Выходные данные
1:
Х
|
1.2
|
2
.2
|
3
.2
|
4
.2
|
F
|
5
|
7
|
9
|
11
|
Входные данные 2:
Хn=1.2, Хк=4.5, Dx=1, а=0, b=0, c=1.0
Выходные данные 2:
Х
|
1.2
|
2
.2
|
3
.2
|
4
.2
|
F
|
1.2
|
2.2
|
3.2
|
4.2
|
Вывод:
В процессе лабораторной работы, решая конкретные задачи на циклические вычислительные процессы с использованием языка программирования С, мы познакомились с общими методами работы с ними.
|