Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика по специальности ВТиП / отчет по практике Дзюмак Мария ВТиП -302-1.docx
Скачиваний:
14
Добавлен:
09.09.2018
Размер:
573.96 Кб
Скачать

5 Постановка задачи

Неравенство вида

где x - переменная, a, b, c - числа, , называется квадратным.

Для решения квадратного неравенства левую часть неравенства приравниваем нулю и находим корни уравнения. Для этого необходимо найти дискриминант уравнения по формуле:

(1)

если D<0, то программа выводит сообщение “Net rewenia”

Корни уравнения находим по формуле:

(2)

Затем, раскладываем квадратный трехчлен для определения, в какой области х>0 , а в какой x<0.Квадратный трехчлен раскладываем по формуле:

  (3)

В формулу (3) подставляем значения x1, x2 и присваиваем значение

x=-10, для определения знака в области (-∞ ; х1). Далее знаки чередуются.

С помощью оператора выбора case выбираем знак нашего неравенства. И, исходя из знака неравенства, программа выдает ответ с нужной нам областью определения функции.

6 Описание процедур программы

Для реализации данной программы, на стадии кодирования были написаны дополнительные функции и процедуры, которые вызываются в теле главной программы. В теле главной программы организовано меню, поскольку использовать команду return в функции так как нам нужно невозможно. Здесь и вызываются все функции.

Нажатиями клавиш «↑» и «↓» осуществляется выделение нужной строки меню. А при нажатии клавиши «→» происходит переход на функцию, в соответствии с выделенным пунктом.

{Главная программа}

int main()

{

char punkty [][30]={"Create BD","Open BD","Add new to BD","Delete from BD","Programm","Exit"};

int k=0, q=6,x=30,y=10/*, w=1*/;

int key, j, i, n, m;

clrscr();

for(i=0;i<n;i++)

{

}

do

{

textcolor(7);

clrscr();

for(i=0;i<q;i++)

{

gotoxy(x,y+i);

cprintf(punkty[i]);

}

do

{

textcolor(128+0);

// w++;

// if(w==7||w==16||w==23||w==32||w==39||w==48)

// w++;

gotoxy(x,y+k);

cprintf(punkty[k]);

key=getch();

if(!key)

key=getch();

switch(key)

{

case 27:

return -1;

case 72:

textcolor(7);

gotoxy(x, y+k);

cprintf(punkty[k]);

if(k==0)

k=q-1;

else

k--;

break;

case 80:

textcolor(7);

gotoxy(x,y+k);

cprintf(punkty[k]);

k++;

if(k==q)

k=0;

}

}

while(key!=13);

switch(k)

{

case -1:

return 0;

case 0:

ZapolnenieBD();

break;

case 1:

ctenieBD();

break;

case 2:

VvodNovoiZapisi();

break;

case 3:

YdalenieZapisi();

break;

case 4:

VawaProga();

break;

case 5:

return 0;

}

}

while(1);

}

Первая процедура ZapolnenieBD организовывает запись данных в файл через использование структуры x[i].

{запись данных в БД}

void ZapolnenieBD(void)

{

struct stud x[50],art,aux;

int i,n,k;

char r,w,q;

FILE *f1;

clrscr();

printf("\n\nVvedite chislo neravenstv: ");

scanf("%d",&n);

for(i=0;i<n;i++){

printf("\nVvedite 1-i koefficent kvadratnogo neravenstva %d: ",i);

scanf("%d",&x[i].fam);

printf("\nVvedite 2-oi koefficent kvadratnogo neravenstvaintegrala %d: ",i);

scanf("%d",&x[i].gruppa);

printf("\nVvedite 3-i koefficent kvadratnogo neravenstva %d: ",i);

scanf("%d",&x[i].kafedra);}

f1=fopen("baza.txt","w");

for(i=0;i<n;i++){

fwrite(&x[i],sizeof(x[i]),1,f1);}

fclose(f1);

printf("\nZapolnennaea BD sohranena v faile \"baza.txt\"\n");

printf("\nPress any key\n");

getch();

}

В процедуре ctenieBD после ввода данных в файл, происходит чтение БД из Файла в структуру x[i]

{чтение данных из БД}

void ctenieBD(void)

{

struct stud x[50],art,aux;

int i,n,k;

char r,w,q;

FILE *f1;

clrscr();

printf("\n\n\t***Vivod bazi na monitor***\n\n");

printf("\t|--------------------------------------------------|\n");

printf("\t| 1-i koefficent| 2-oi koefficent| 3-i koefficent |\n");

printf("\t|--------------------------------------------------|\n");

f1=fopen("baza.txt","r"); i=0;

while(fread(&x[i],sizeof(x[i]),1,f1)==1){

printf("\t|%15d |%16d |%15d |\n",x[i].fam,x[i].gruppa,x[i].kafedra); i++;

printf("\t|--------------------------------------------------|\n");}

fclose(f1);n=i;

printf("\n\tPress any key\n");

getch();

}

В процедуре VvodNovoiZapisi мы с помощью команды fopen “a” добавляем новые данные в конец файла.

{Добавление в базу данных переменных}

void VvodNovoiZapisi(void)

{

struct stud x[50],art,aux;

int i,n,k;

char r,w,q;

FILE *f1;

clrscr();

printf("\nHotite dobaviti novuiu zapisi? y/n\n");

w=getch();

if((w=='n')||(w=='N')){goto m0;}

if((w=='y')||(w=='Y')){

printf("\nVvedite 1-i koefficent kvadratnogo neravenstva %d: ",i+1);

scanf("%d",&aux.fam);

printf("\nVvedite 2-oi koefficent kvadratnogo neravenstva %d: ",i+1);

scanf("%d",&aux.gruppa);

printf("\nVvedite 3-i koefficent kvadratnogo neravenstva %d: ",i+1);

scanf("%d",&aux.kafedra);

f1=fopen("baza.txt","a");

for(i=0;i<1;i++){

fwrite(&aux,sizeof(aux),1,f1);}

fclose(f1);

printf("\nZapisi bila dobavlena v konets faila\n");

printf("\nPress any key\n");

getch();

m0:}

}

Можно удалять определенные записи благодаря процедуре

YdalenieZapisi.

void YdalenieZapisi(void)

{

struct stud x[50],art,aux;

int j,i,n,k;

char r,w,q;

FILE *f1;

clrscr();

printf("\nHotite ydalit zapis? y/n\n");

w=getch();

if((w=='n')||(w=='N')){goto m0;}

if((w=='y')||(w=='Y')){

printf("\n\n\Vvedite nomer zapisi kotoruy xotite ydalit\n\n");

cin»k;

k=k-1;

f1=fopen("baza.txt","r"); i=0;

while(fread(&x[i],sizeof(x[i]),1,f1)==1){

i++;

}

for (j=k;j<=i-1;j++){

x[j].fam=x[j+1].fam;

x[j].gruppa=x[j+1].gruppa;

x[j].kafedra=x[j+1].kafedra;}

fclose(f1);n=i-1;

f1=fopen("baza.txt","w");

for(i=0;i<n;i++){

fwrite(&x[i],sizeof(x[i]),1,f1);}

fclose(f1);}

printf("\n\tPress any key\n");

getch(); m0:

}

Процедурой VawaProga производится расчет по физическим формулам, здесь используется вводимое нами число из БД и от него зависит результаты расчета, по которым нам выдастся итоговый вывод, где мы узнаем область определения вводимой нами квадратной функции.

Программа вычисления области определения квадратной функции.

Изначально с помощью оператора выбора case выбираем знак нашего неравенства. Затем квадратную функцию приравниваем нулю. С помощью квадратного уравнения находим корни уравнения (x1 и x2). По знаку неравенства определяем область определения функции.

{s4itaem po formylam}

void VawaProga(void)

{

struct stud x[50],art,aux;

int j,i,n,k;

char r,w,q;

FILE *f1;

FILE *f2;

char text[200];

float xx1,xx2;

int xx,yy,znak;

int aa,bb,cc; // 1-i, 2-oi, 3-i koefficenti

int ddx; // дискриминант

char s1[255];

int m;

clrscr();

cout<<"Vvedite nomer zapisi kotoruy xotite ispolzovat\n";

cin>>k;

k=k-1;

f1=fopen("baza.txt","r"); i=0;

while(fread(&x[i],sizeof(x[i]),1,f1)==1)

{i++;}

fclose(f1);

printf("\n\n\t***Vubrannue peremennue***\n\n");

printf("\t|---------------------------------------------------|\n");

printf("\t| 1-i koefficent | 2-oi koefficent | 3-i koefficent |\n");

printf("\t|---------------------------------------------------|\n");

printf("\t|%16d |%6d |%7d|\n",x[k].fam,x[k].gruppa,x[k].kafedra);

printf("\t|---------------------------------------------------|\n");

//Otsuda nyjno vstavit syda svou programmu, nyjno ispolzovat 3 vawix peremennux x[k].fam,x[k].gruppa,x[k].kafedra

cout<<"Viberite nomer znaka neravenstva:"<<endl;

cout<<"1) >"<<endl<<"2) <"<<endl<<"3) >="<<endl<<"4) <="<<endl;

cin>>znak;

ddx=x[k].gruppa*x[k].gruppa-4*x[k].fam*x[k].kafedra;

if (ddx<0){

textcolor(4);

cprintf("Net reweni9\n");}

xx1=(-x[k].gruppa+sqrt(ddx))/(2*x[k].fam);

xx2=(-x[k].gruppa-sqrt(ddx))/(2*x[k].fam);

xx=-10;

yy=x[k].fam*(xx-xx1)*(xx-xx2);

switch(znak)

{case 1:

if (xx1<xx2){

if (yy<0) {

cout<<"otvet:"<<endl;

cout<<"(" <<xx1<<" ; "<<xx2<<")"<<endl;}

if (yy>0) {

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx1<<");("<<xx2<<" ; +oo)"<<endl;

} }

if (xx1>xx2){

if (yy<0) {

cout<<"otvet:"<<endl;

cout<<"(" <<xx2<<" ; "<<xx1<<")"<<endl;}

if (yy>0) {

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx2<<")U("<<xx1<<" ; +oo)"<<endl;

} }

if (xx1==xx2){

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx1<<")U("<<xx1<<" ; +oo)"<<endl;

};

break;

case 2:

if (xx1<xx2){

if (yy>0) {

cout<<"otvet:"<<endl;

cout<<"(" <<xx1<<" ; "<<xx2<<")"<<endl;}

if (yy<0) {

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx1<<");("<<xx2<<" ; +oo)"<<endl;

} }

if (xx1>xx2){

if (yy>0) {

cout<<"otvet:"<<endl;

cout<<"(" <<xx2<<" ; "<<xx1<<")"<<endl;}

if (yy<0) {

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx2<<");("<<xx1<<" ; +oo)"<<endl;

} }

if (xx1==xx2){

cout<<"otvet:"<<endl;

cout<<"(Pustoe mnozhestvo)";}

break;

case 3:

if (xx1<xx2){

if (yy<0) {

cout<<"otvet:"<<endl;

cout<<"[" <<xx1<<" ; "<<xx2<<"]"<<endl;}

if (yy>0) {

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx1<<"];["<<xx2<<" ; +oo)"<<endl;

} }

if (xx1>xx2){

if (yy<0) {

cout<<"otvet:"<<endl;

cout<<"[" <<xx2<<" ; "<<xx1<<"]"<<endl;}

if (yy>0) {

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx2<<"]U["<<xx1<<" ; +oo)"<<endl;

} }

if (xx1==xx2){

cout<<"otvet:"<<endl;

cout<<"(-oo ; +oo)"<<endl;

};

break;

case 4:

if (xx1<xx2){

if (yy>0) {

cout<<"otvet:"<<endl;

cout<<"[" <<xx1<<" ; "<<xx2<<"]"<<endl;}

if (yy<0) {

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx1<<"];["<<xx2<<" ; +oo)"<<endl;

} }

if (xx1>xx2){

if (yy>0) {

cout<<"otvet:"<<endl;

cout<<"[" <<xx2<<" ; "<<xx1<<"["<<endl;}

if (yy<0) {

cout<<"otvet:"<<endl;

cout<<"(-oo ; "<<xx2<<"];["<<xx1<<" ; +oo)"<<endl;

} }

if (xx1==xx2){

cout<<"otvet:"<<endl;

cout<<"["<<xx1<<"]";}

break;

}

getch();

}