Задание.
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dХ.
где а, b, c – действительные числа.
Функция F должна принимать действительное значение, если выражение (Ац МОД2 Вц) ИЛИ (Ац МОД2 Сц)
не равно нулю, и целое значение в противном случае. Через Ац, Вц, Сц обозначены целые части значений a, b, c, операции МОД2 и ИЛИ – поразрядные. Значения a, b,c Хнач., Хкон., dХ ввести с клавиатуры.
Цель работы.
Изучить операторы цикла: for, while, do. Приобрести опыт программирования на C++.
Теоретические сведения.
Цикл с пpедусловием: while (выpажение_условие)
тело_цикла;
Цикл с постусловием: do
тело_цикла;
while (выpажение_условие);
Итеpационный цикл: for (инициализация цикла;
выpажение_условие;
список_выpажений)
тело_цикла;
где
Тело_цикла; — опеpатоp или составной опеpатоp: { }
Выpажение_условие — скаляpное выpажение (отношение или аpифметическое выpажение). Опpеделяет
пpодолжение выполнения итеpаций, если !=0.
Если == 0 , то цикл пpекpащается
Инициализация цикла — список опpеделений и выpажений (начальное значение пеpеменных)
Список_выpажений — скаляpные выpажения, pазделенные запятыми.
Цикл пpекpащается пpи:
— выpажение_условие == 0
— в теле циклы выполнился опеpатоp пеpедачи упpавления
(break, goto, return) за пpеделя цикла
Текст программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
#include <stdio.h> #include <conio.h> float MyFunc(float a,float b,float c, float x); void main() { float xs,xe,dx,a,b,c,x; int n; printf("\n"); printf("\nВведите a:"); scanf("%f",&a); printf("\nВведите b:"); scanf("%f",&b); printf("\nВведите c:"); scanf("%f",&c); printf("\nВведите x начальное:"); scanf("%f",&xs); xe=xs; while (xe<=xs) { printf("\nВведите x конечное:"); scanf("%f",&xe); if (xe<=xs) printf("x конечное должен быть больще x начального!!!"); } dx=0; while (dx<=0) { printf("\nВведите щаг:"); scanf("%f",&dx); if (dx<=0) { printf("Шаг должен быть больше 0!!!"); } } x=xs; n=-1; while (x<=xe) { n++; n=n%22; if (n==0) { printf("Нажмите любую клавишу для продолжения... \n"); getch(); printf("x F\n"); } printf("%f %f\n",x,MyFunc(a,b,c,x)); x+=dx; } printf("Нажмите любую клавишу для выхода..."); getch(); } float MyFunc(float a,float b,float c, float x) { float result; int ac=int(a),bc=int(b),cc=int(c); int y=(ac^bc)|(ac^cc); if ((x+c<3)&&(a!=0)) { result=-a*x*x*x-b; } else { if ((x+c>3)&& (a==0)) { result=(x-a)/(x-c); } else { result=x/c+c/x; } } if (y==0) result=int(result); return result; } |
Вывод.
Были изучены циклические операторы. Написана программа, выводящая на экран значения заданной функции от начального заданного значения до конечного заданного значения. Вывод производится с заданным шагом.