- •Отчет по практике
- •Содержание
- •Введение
- •1 Характеристика тоо "Центр аналитической информации"
- •2 Исследование программных и аппаратных средств на предприятии.
- •3 Степень использования программных и аппаратных средств и автоматизация на предприятии.
- •4 Установка и изучение объектно-ориентированной среды Turbo c
- •5 Постановка задачи
- •6 Описание процедур программы
- •7 Руководство пользователя
- •8 Тестирование программы
- •Заключение
- •Список использованной литературы
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();
}