Отчет по лабораторной работе №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 |
Вывод: В процессе лабораторной работы, решая конкретные задачи на циклические вычислительные процессы с использованием языка программирования С, мы познакомились с общими методами работы с ними.