p align="left"> cprintf("%s","isplay"); window(37,3,37,3); textbackground(LIGHTGRAY); clrscr(); } if(n==11) { window(30,4,34,4); textbackground(GREEN); clrscr(); textcolor(RED); cprintf("%s","F"); textcolor(BLACK); cprintf("%s","ile"); window(34,4,34,4); textbackground(LIGHTGRAY); clrscr(); } } //------------------------------------------------------------------------------ //функция ввода натурального числа //------------------------------------------------------------------------------ int n_input(int max) { char ch; char str[100]; int i=0; do { ch = (char)getch(); if (i==0) { if ((ch>'0')&&(ch<='9')) { str[i++]=ch; putch(ch); } } else { if ((ch>='0')&&(ch<='9')) { str[i++]=ch; putch(ch); } } if((ch=='\r')&&(i==0)) //если нажата клавиша ENTER и ничего не введено { ch='x'; printf(" \b"); //backspace } if ((ch=='\b')&&(i>0)) //если нажата клавиша BACKSPACE { i--; printf("\b \b"); } if(i==(max+1)) //если достигли max количества цифр { i--; printf("\b \b"); } } while (ch!='\r'); str[i]='\0'; for (int j=i;j>0;j--) printf("\b \b"); printf("%d",atoi(str)); return atoi(str); //преобразуем в число } //------------------------------------------------------------------------------ //функция ввода действительного числа //------------------------------------------------------------------------------ double float_input() { const max=6; //максимальное количество цифр в числе int i=0; //счётчик ввода символа char ch,buffer[max]; bool flp=0; //флажок ввода символа "." bool fle=0; //флажок ввода "е" do { ch = (char)getch(); if ((ch=='-')&&((i==0)||(buffer[i-1]=='e'))) //ввод "-" { //в начале строки buffer[i++]=ch; //и после "е" putch(ch); } if ((ch>='0')&&(ch<='9')) //ввод цифр { buffer[i++]=ch; putch(ch); } if (((ch=='.')||(ch==','))&&(flp==0)) //ввод плавающей { //точки buffer[i++]='.'; putch('.'); flp=1; } if ((ch=='e' || ch=='E') && i>0 && fle==0) { //ввод "е" buffer[i++]='e'; putch('e'); fle=1; } if ((ch=='\b')&&(i>0)) //ввод кода { //клавиши i--; //BACKSPACE cprintf("\b \b"); if (buffer[i]=='.') flp=0; if (buffer[i]=='E') fle=0; } if ((ch=='\r')&&(i==0)) ch='\0'; if(i==(max+1)) { i--; cprintf("\b \b"); } } while (ch!='\r'); buffer[i]='\0'; //"закрытие" строки for (int j=i;j>0;j--) cprintf("\b \b"); cprintf("%2.2e",strtod(buffer,0)); return strtod(buffer,0); //преобразование к веществ. значению } //------------------------------------------------------------------------------ //О программе //------------------------------------------------------------------------------ void about() { char ch; window(25,8,59,18); textbackground(BLACK); clrscr(); window(24,7,58,17); textbackground(LIGHTGRAY); textcolor(BLACK); clrscr(); cprintf("\n\r ђ §а Ў®вЄ Їа®Ја ¬¬л ¤«п аҐиҐЁп "); cprintf("\n\r бЁб⥬ «ЁҐ©ле га ўҐЁ©"); cprintf("\n\n\r ‚ҐабЁп 1.0 2007Ј."); cprintf("\n\n\r ‚лЇ®«Ё« бв㤥⠣а. `Љ-06"); cprintf("\n\r Њ ¬ Ґў `.‚."); cprintf("\n\n\r „«п Їа®¤®«¦ҐЁп ¦¬ЁвҐ <Enter>"); do { ch=(char)getch(); } while(ch!=13); //пока не нажат ENTER } //------------------------------------------------------------------------------ //текст задания //------------------------------------------------------------------------------ void task() { char ch; window(21,6,62,20); textbackground(BLACK); clrscr(); window(20,5,61,19); textbackground(LIGHTGRAY); textcolor(BLACK); clrscr(); cprintf("\n\n\n\r ђ §а Ў®в вм Їа®Ја ¬¬г ¤«п аҐиҐЁп бЁб⥬"); cprintf("\n\r «ЁҐ©ле га ўҐЁ©. ђҐ «Ё§®ў вм ¬Ґв®¤л: "); cprintf("\n\r )Їа®бвле ЁвҐа жЁ©; Ў)‡Ґ©¤Ґ«п. ЏаҐ¤гᬮ-"); cprintf("\n\r ваҐвм ўў®¤ зЁб« га ўҐЁ©(¤® 10), ¬ в-"); cprintf("\n\r аЁжл Є®нддЁжЁҐв®ў Ё ўҐЄв®а бў®Ў®¤ле "); cprintf("\n\r з«Ґ®ў."); cprintf("\n\n\n\n\n\r „«п Їа®¤®«¦ҐЁп ¦¬ЁвҐ <Enter>"); do { ch=(char)getch(); } while(ch!=13); //пока не нажат ENTER } //------------------------------------------------------------------------------ //окно help //------------------------------------------------------------------------------ void help() { char ans; int h_num=1; do { menu(); //отрисовка меню window(3,4,12,5); textbackground(BLACK); clrscr(); window(2,3,11,4); textbackground(LIGHTGRAY); clrscr(); textcolor(RED); cprintf("%s"," A"); textcolor(BLACK); cprintf("%s","bout"); textcolor(RED); cprintf("%s","\n\r T"); textcolor(BLACK); cprintf("%s","ask"); cursor(h_num+5); ans=(char)getch(); if(ans==80) {if(h_num!=2) h_num++;} //если нажали "стрелку вниз" if(ans==72) {if(h_num!=1) h_num--;} //если нажали "стрелку вверх" } while((ans!=27)&&(ans!='a')&&(ans!='A')&&(ans!='t')&&(ans!='T')&&(ans!=13)); if((ans=='t')||(ans=='T')||((h_num==2)&&(ans==13))) { window(2,3,14,6); textbackground(BLACK); clrscr(); task(); //окно вывода текста задания } if((ans=='a')||(ans=='A')||((h_num==1)&&(ans==13))) { window(2,3,14,6); textbackground(BLACK); clrscr(); about(); //окно вывода информации о разработчике } } //------------------------------------------------------------------------------ //функция ввода данных //------------------------------------------------------------------------------ void input(double **&A,double *&B,int &n) { char ch; window(8,3,20,6); textbackground(BLACK); clrscr(); window(15,6,64,18); textbackground(LIGHTGRAY); clrscr(); textcolor(BLACK); cprintf("%s","\n\n\r ‚ўҐ¤ЁвҐ зЁб«® га ўҐЁ© (1..10)"); window(48,8,51,8); textbackground(BLACK); textcolor(LIGHTGRAY); clrscr(); bool fl=false; do //защита от ввода числа уравнений более 10 { n=n_input(2); //функция ввода двузначного числа if((n<=10)&&(n>=1)) fl=true; else clrscr(); } while(fl!=true); A=(double**)malloc(n*n*sizeof(double)); //выделение памяти для массива B=(double*)malloc(n*sizeof(double)); window(15,10,64,10); textbackground(LIGHTGRAY); clrscr(); textcolor(BLACK); cprintf("%s","\r ‚ўҐ¤ЁвҐ н«Ґ¬Ґвл ¬ ваЁжл Є®нддЁжЁҐв®ў"); window(15,11,64,11); textbackground(LIGHTGRAY); clrscr(); for(int i=0;i<n;i++) { A[i]=(double*)malloc(n*sizeof(double)); for(int j=0;j<n;j++) { clrscr(); cprintf("\r A[%d][%d]=",i+1,j+1); A[i][j]=float_input(); //ввод действительного числа } } window(15,13,64,13); textbackground(LIGHTGRAY); clrscr(); cprintf("%s","\n\n\r ‚ўҐ¤ЁвҐ н«Ґ¬Ґвл ўҐЄв®а бў®Ў®¤ле з«Ґ®ў"); window(15,14,64,14); textbackground(LIGHTGRAY); clrscr(); for(int i=0;i<n;i++) { clrscr(); cprintf("\r B[%d]=",i+1); B[i]=float_input(); //ввод действительного числа } window(15,17,64,17); textbackground(LIGHTGRAY); clrscr(); cprintf("%s","\r „«п Їа®¤®«¦ҐЁп ¦¬ЁвҐ <Enter>"); do {ch=(char)getch();} while(ch!=13); //пока не нажат ENTER } //------------------------------------------------------------------------------ //функция решения //------------------------------------------------------------------------------ void decision(double **&A,double *&B,double *&X,int &n,int &s)
Страницы: 1, 2, 3, 4
|