{"id":7736,"date":"2009-04-09T10:51:18","date_gmt":"2009-04-09T07:51:18","guid":{"rendered":"http:\/\/studentpmr.ru\/?p=7736"},"modified":"2009-04-09T10:51:18","modified_gmt":"2009-04-09T07:51:18","slug":"%d1%82%d0%b5%d0%ba%d1%81%d1%82-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d1%8b-%d0%be%d0%ba%d0%be%d0%bd%d1%87%d0%b0%d0%bd%d0%b8%d0%b5","status":"publish","type":"post","link":"https:\/\/studentpmr.ru\/?p=7736","title":{"rendered":"\u0422\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435"},"content":{"rendered":"<p>void main(void) {<\/p>\n<p>textbackground(CYAN);<\/p>\n<p>clrscr();<\/p>\n<p>init_popup(vert_menu[0], 5, 1, 4, 3, 0);<\/p>\n<p>init_popup(vert_menu[1], 2, 1, 13, 3, 1);<\/p>\n<p>init_popup(vert_menu[2], 2, 1, 22, 3, 2);<\/p>\n<p> <!--more-->  <\/p>\n<p>main_menu.count = GOR_MENU;<\/p>\n<p>main_menu.active_col = 0;<\/p>\n<p>number_record = 0;<\/p>\n<p>display_gmenu();<\/p>\n<p>_setcursortype(_NOCURSOR);<\/p>\n<p>print_head();<\/p>\n<p>print_status_bar();<\/p>\n<p>create_file();<\/p>\n<p>\/\/ strcpy(file_name, &quot;menu1.mnu&quot;);<\/p>\n<p>\/\/ read_file(file_name);<\/p>\n<p>print_status_file();<\/p>\n<p>int exit = 0, key, choice_menu;<\/p>\n<p>while(!exit) {<\/p>\n<p>key = edit_menu();<\/p>\n<p>key = menu_choice(key);<\/p>\n<p>switch(key) {<\/p>\n<p>case F10:<\/p>\n<p>choice_menu = get_resp();<\/p>\n<p>switch(choice_menu) {<\/p>\n<p>case 0:<\/p>\n<p>create_file();<\/p>\n<p>break;<\/p>\n<p>case 1:<\/p>\n<p>open_file();<\/p>\n<p>break;<\/p>\n<p>case 2:<\/p>\n<p>save_file();<\/p>\n<p>break;<\/p>\n<p>case 3:<\/p>\n<p>save_file_as();<\/p>\n<p>break;<\/p>\n<p>case 4:<\/p>\n<p>exit = 1;<\/p>\n<p>break;<\/p>\n<p>case 10:<\/p>\n<p>sort_menu(0);<\/p>\n<p>break;<\/p>\n<p>case 11:<\/p>\n<p>sort_menu(1);<\/p>\n<p>break;<\/p>\n<p>case 20:<\/p>\n<p>print_reference();<\/p>\n<p>break;<\/p>\n<p>case 21:<\/p>\n<p>print_about();<\/p>\n<p>break;<\/p>\n<p>case ESC:<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>break;<\/p>\n<p>case F2:<\/p>\n<p>save_file();<\/p>\n<p>break;<\/p>\n<p>case F3:<\/p>\n<p>open_file();<\/p>\n<p>break;<\/p>\n<p>case F4:<\/p>\n<p>add_record();<\/p>\n<p>break;<\/p>\n<p>case AltX:<\/p>\n<p>exit = 1;<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>void print_status_file(void)<\/p>\n<p>{<\/p>\n<p>textattr(NORM_REC);<\/p>\n<p>gotoxy(60,2);<\/p>\n<p>cprintf(&quot;==== %s ====&quot;, file_name);<\/p>\n<p>}<\/p>\n<p>void print_status_pos(int rec)<\/p>\n<p>{<\/p>\n<p>textattr(NORM_REC);<\/p>\n<p>gotoxy(2,22);<\/p>\n<p>cprintf(&quot;=%d\/%d=&quot;, rec+1, number_record);<\/p>\n<p>}<\/p>\n<p>void save_file(void) {<\/p>\n<p>FILE *fps;<\/p>\n<p>char temp_str[10];<\/p>\n<p>if( (fps = fopen(file_name, &quot;w+&quot;)) == NULL){<\/p>\n<p>puts(&quot;ERROR&quot;);<\/p>\n<p>exit(1);<\/p>\n<p>}<\/p>\n<p>int i;<\/p>\n<p>for(i=0; i&lt;number_record-1; i++){<\/p>\n<p>fprintf(fps, Menu[i].name);<\/p>\n<p>int dec, sign, ndig = 2;<\/p>\n<p>strcpy(&amp;temp_str[1], fcvt(Menu[i].price, ndig, &amp;dec, &amp;sign));<\/p>\n<p>temp_str[0] = temp_str[1];<\/p>\n<p>temp_str[1] = &#8216;.&#8217;;<\/p>\n<p>fprintf(fps, &quot;%s&quot;,temp_str);<\/p>\n<p>if(i &lt; number_record-2) fprintf(fps, &quot;\\n&quot;);<\/p>\n<p>}<\/p>\n<p>fclose(fps);<\/p>\n<p>\/\/ bioskey(0);<\/p>\n<p>}<\/p>\n<p>\/\/**************************<\/p>\n<p>void save_file_as(void) {<\/p>\n<p>char str[100];<\/p>\n<p>show_window(3, 10, 35, 15);<\/p>\n<p>textattr(WHITE|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>gotoxy(11, 11);<\/p>\n<p>cprintf(&quot;\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430&quot;);<\/p>\n<p>textattr(WHITE|BLUE&lt;&lt;4);<\/p>\n<p>gotoxy(11, 13);<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>_setcursortype(_NORMALCURSOR);<\/p>\n<p>gotoxy(11, 13);<\/p>\n<p>char i = 0, ch = 0;<\/p>\n<p>while((ch != 13) &amp;&amp; (ch != 27) &amp;&amp; (i != 13)) {<\/p>\n<p>ch = getche();<\/p>\n<p>str[i++] = ch;<\/p>\n<p>}<\/p>\n<p>if(ch == 27) return;<\/p>\n<p>str[i-1] = &#8216;\\0&#8217;;<\/p>\n<p>strcpy(file_name, str);<\/p>\n<p>save_file();<\/p>\n<p>print_status_file();<\/p>\n<p>_setcursortype(_NOCURSOR);<\/p>\n<p>}<\/p>\n<p>int menu_choice(int cell)<\/p>\n<p>{<\/p>\n<p>static int st_rec = 0, record = 0, pos = 4;<\/p>\n<p>\/\/ if(new_file) {st_rec = 0, rec = 0, position = 4, new_file = 0;}<\/p>\n<p>if(cell&gt;=0) {<\/p>\n<p>ch_menu[number_chrecord] = Menu[cell], number_chrecord++;<\/p>\n<p>print_menu1(st_rec);<\/p>\n<p>calculate_sum_price();<\/p>\n<p>return cell;<\/p>\n<p>}<\/p>\n<p>if(cell != TAB) return cell;<\/p>\n<p>if(number_chrecord == 0) return cell;<\/p>\n<p>print_menu1(st_rec);<\/p>\n<p>int end_rec;<\/p>\n<p>int exit = 0;<\/p>\n<p>int key;<\/p>\n<p>write_cell(record, pos, 2, INV_REC); \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>\/\/ print_status_pos(rec);<\/p>\n<p>while(!exit) {<\/p>\n<p>end_rec = 17 + st_rec;<\/p>\n<p>if(end_rec &gt; number_chrecord-1) end_rec = number_chrecord-1;<\/p>\n<p>key = bioskey(0);<\/p>\n<p>switch(key) {<\/p>\n<p>case ARROW_DOWN:<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>if(pos == end_rec &#8212; st_rec + 4) {<\/p>\n<p>if(end_rec &lt; number_chrecord-1) {<\/p>\n<p>record++;<\/p>\n<p>st_rec++;<\/p>\n<p>end_rec++;<\/p>\n<p>print_menu1(st_rec);<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>write_cell(record, pos, 2, INV_REC);<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>pos++;<\/p>\n<p>record++;<\/p>\n<p>}<\/p>\n<p>\/\/ print_status_pos(rec);<\/p>\n<p>write_cell(record, pos, 2, INV_REC);<\/p>\n<p>break;<\/p>\n<p>case ARROW_UP:<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>if(pos == 4) {<\/p>\n<p>if(st_rec &gt; 0) {<\/p>\n<p>record&#8212;;<\/p>\n<p>st_rec&#8212;;<\/p>\n<p>if(end_rec &lt;= number_record-1) end_rec&#8212;;<\/p>\n<p>print_menu1(st_rec);<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>write_cell(record, pos, 2, INV_REC);<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>pos&#8212;;<\/p>\n<p>record&#8212;;<\/p>\n<p>}<\/p>\n<p>\/\/ print_status_pos(rec);<\/p>\n<p>write_cell(record, pos, 2, INV_REC);<\/p>\n<p>break;<\/p>\n<p>case ARROW_DEL:<\/p>\n<p>if(number_chrecord == 1) {<\/p>\n<p>textattr(NORM_REC);<\/p>\n<p>for(int i=3; i&lt;=20; i++) {<\/p>\n<p>goto_xy(39, i);<\/p>\n<p>for(int k=0; k&lt;39; k++)<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>number_chrecord&#8212;;<\/p>\n<p>calculate_sum_price();<\/p>\n<p>return cell;<\/p>\n<p>}<\/p>\n<p>if(record == number_chrecord-1){<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>for(int i=record; i&lt; number_chrecord-1; i++)<\/p>\n<p>ch_menu[i] = ch_menu[i+1];<\/p>\n<p>number_chrecord&#8212;;<\/p>\n<p>record&#8212;;<\/p>\n<p>pos&#8212;;<\/p>\n<p>end_rec&#8212;;<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>for(int i=record; i&lt; number_chrecord-1; i++)<\/p>\n<p>ch_menu[i] = ch_menu[i+1];<\/p>\n<p>number_chrecord&#8212;;<\/p>\n<p>}<\/p>\n<p>print_menu1(st_rec);<\/p>\n<p>\/\/ print_status_pos(rec);<\/p>\n<p>write_cell(record, pos, 2, INV_REC);<\/p>\n<p>calculate_sum_price();<\/p>\n<p>break;<\/p>\n<p>case ARROW_TAB:<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>exit = TAB;<\/p>\n<p>break;<\/p>\n<p>case ARROW_AltX:<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>exit = AltX;<\/p>\n<p>break;<\/p>\n<p>case ARROW_F4:<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>exit = F4;<\/p>\n<p>break;<\/p>\n<p>case ARROW_F3:<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>exit = F3;<\/p>\n<p>break;<\/p>\n<p>case ARROW_F2:<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>exit = F2;<\/p>\n<p>break;<\/p>\n<p>case ARROW_F10:<\/p>\n<p>write_cell(record, pos, 2, NORM_REC);<\/p>\n<p>exit = F10;<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>return exit;<\/p>\n<p>}<\/p>\n<p>int edit_menu(void)<\/p>\n<p>{<\/p>\n<p>static int st_rec = 0, rec = 0, col = 0, position = 4;<\/p>\n<p>if(new_file) {st_rec = 0, rec = 0, col = 0, position = 4, new_file = 0;}<\/p>\n<p>int end_rec;<\/p>\n<p>print_menu(st_rec);<\/p>\n<p>int exit = 0;<\/p>\n<p>int key;<\/p>\n<p>write_cell(rec, position, col, INV_REC); \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/p>\n<p>print_status_pos(rec);<\/p>\n<p>while(!exit) {<\/p>\n<p>end_rec = 17 + st_rec;<\/p>\n<p>if(end_rec &gt; number_record-1) end_rec = number_record-1;<\/p>\n<p>key = bioskey(0);<\/p>\n<p>switch(key) {<\/p>\n<p>case ARROW_RIGHT:<\/p>\n<p>write_cell(rec, position, col, NORM_REC);<\/p>\n<p>if(col == 1) col = 0;<\/p>\n<p>else col++;<\/p>\n<p>write_cell(rec, position, col, INV_REC);<\/p>\n<p>break;<\/p>\n<p>case ARROW_LEFT:<\/p>\n<p>write_cell(rec, position, col, NORM_REC);<\/p>\n<p>if(col == 0) col = 1;<\/p>\n<p>else col&#8212;;<\/p>\n<p>write_cell(rec, position, col, INV_REC);<\/p>\n<p>break;<\/p>\n<p>case ARROW_DOWN:<\/p>\n<p>write_cell(rec, position, col, NORM_REC);<\/p>\n<p>if(position == end_rec &#8212; st_rec + 4) {<\/p>\n<p>if(end_rec &lt; number_record-1) {<\/p>\n<p>rec++;<\/p>\n<p>st_rec++;<\/p>\n<p>end_rec++;<\/p>\n<p>print_menu(st_rec);<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>write_cell(rec, position, col, INV_REC);<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>position++;<\/p>\n<p>rec++;<\/p>\n<p>}<\/p>\n<p>print_status_pos(rec);<\/p>\n<p>write_cell(rec, position, col, INV_REC);<\/p>\n<p>break;<\/p>\n<p>case ARROW_UP:<\/p>\n<p>write_cell(rec, position, col, NORM_REC);<\/p>\n<p>if(position == 4) {<\/p>\n<p>if(st_rec &gt; 0) {<\/p>\n<p>rec&#8212;;<\/p>\n<p>st_rec&#8212;;<\/p>\n<p>if(end_rec &lt;= number_record-1) end_rec&#8212;;<\/p>\n<p>print_menu(st_rec);<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>write_cell(rec, position, col, INV_REC);<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>position&#8212;;<\/p>\n<p>rec&#8212;;<\/p>\n<p>}<\/p>\n<p>print_status_pos(rec);<\/p>\n<p>write_cell(rec, position, col, INV_REC);<\/p>\n<p>break;<\/p>\n<p>case ARROW_SPACE:<\/p>\n<p>write_cell(rec, position, col, EDIT_REC);<\/p>\n<p>edit_cell(rec, position, col, EDIT_REC);<\/p>\n<p>print_menu(st_rec);<\/p>\n<p>write_cell(rec, position, col, INV_REC);<\/p>\n<p>break;<\/p>\n<p>case ARROW_DEL:<\/p>\n<p>if(number_record == 1) break;<\/p>\n<p>if(rec == number_record-1){<\/p>\n<p>write_cell(rec, position, col, NORM_REC);<\/p>\n<p>delete_record(rec&#8212;);<\/p>\n<p>position&#8212;;<\/p>\n<p>end_rec&#8212;;<\/p>\n<p>}<\/p>\n<p>else<\/p>\n<p>delete_record(rec);<\/p>\n<p>print_menu(st_rec);<\/p>\n<p>print_status_pos(rec);<\/p>\n<p>write_cell(rec, position, col, INV_REC);<\/p>\n<p>break;<\/p>\n<p>case ARROW_ENTER:<\/p>\n<p>return rec;<\/p>\n<p>case ARROW_TAB:<\/p>\n<p>write_cell(rec, position, col, NORM_REC);<\/p>\n<p>exit = TAB;<\/p>\n<p>break;<\/p>\n<p>case ARROW_ESC:<\/p>\n<p>exit = ESC;<\/p>\n<p>break;<\/p>\n<p>case ARROW_AltX:<\/p>\n<p>exit = AltX;<\/p>\n<p>break;<\/p>\n<p>case ARROW_F4:<\/p>\n<p>exit = F4;<\/p>\n<p>break;<\/p>\n<p>case ARROW_F3:<\/p>\n<p>exit = F3;<\/p>\n<p>break;<\/p>\n<p>case ARROW_F2:<\/p>\n<p>exit = F2;<\/p>\n<p>break;<\/p>\n<p>case ARROW_F10:<\/p>\n<p>exit = F10;<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>return exit;<\/p>\n<p>}<\/p>\n<p>void sort_menu(int by) {<\/p>\n<p>if(by == 0)<\/p>\n<p>qsort(Menu, number_record, sizeof(p_menu), cmp_fio);<\/p>\n<p>else<\/p>\n<p>qsort(Menu, number_record, sizeof(p_menu), cmp_reit);<\/p>\n<p>}<\/p>\n<p>int cmp_fio( const void *name_A, const void *name_B) {<\/p>\n<p>char *A_str = (char*)(name_A);<\/p>\n<p>char *B_str = (char*)(name_B);<\/p>\n<p>return stricmp( A_str, B_str);<\/p>\n<p>}<\/p>\n<p>int cmp_reit( const void *name_A, const void *name_B) {<\/p>\n<p>p_menu *A_int = (p_menu *)name_A;<\/p>\n<p>p_menu *B_int = (p_menu *)name_B;<\/p>\n<p>return ( (float)(B_int-&gt;price) &#8212; (float)(A_int-&gt;price))*100;<\/p>\n<p>}<\/p>\n<p>void edit_cell(int num_rec, int y, int num_col, int mode)<\/p>\n<p>{<\/p>\n<p>_setcursortype(_SOLIDCURSOR);<\/p>\n<p>gotoxy(inf_col[num_col].startx, y);<\/p>\n<p>textattr(mode);<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>int key = 0;<\/p>\n<p>char temp_str[30];<\/p>\n<p>int pos = 0, end_pos = strlen(Menu[num_rec].name)-1;<\/p>\n<p>switch(inf_col[num_col].type) {<\/p>\n<p>case STR:<\/p>\n<p>strcpy(temp_str, Menu[num_rec].name);<\/p>\n<p>while(key != ARROW_ENTER) {<\/p>\n<p>key = bioskey(0);<\/p>\n<p>if(isalpha(key &amp; 0xFF) || ((key &amp; 0xFF) &gt;=128) &amp;&amp; ((key &amp; 0xFF) &lt;=175)<\/p>\n<p>|| ((key &amp; 0xFF) &gt;=224) &amp;&amp; ((key &amp; 0xFF) &lt;= 239) || (key &amp; 0xFF) ==46 || (key &amp; 0xFF) == 32) {<\/p>\n<p>if(pos &gt;= 28) {<\/p>\n<p>pos = 0;<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>cprintf(&quot;%c&quot;, key);<\/p>\n<p>temp_str[pos++] = key;<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>switch(key) {<\/p>\n<p>case ARROW_RIGHT:<\/p>\n<p>if(pos == end_pos) {<\/p>\n<p>pos = 0;<\/p>\n<p>}<\/p>\n<p>else<\/p>\n<p>pos++;<\/p>\n<p>gotoxy(inf_col[num_col].startx+pos+1, y);<\/p>\n<p>break;<\/p>\n<p>case ARROW_LEFT:<\/p>\n<p>if(pos == 0) {<\/p>\n<p>pos = end_pos;<\/p>\n<p>}<\/p>\n<p>else<\/p>\n<p>pos&#8212;;<\/p>\n<p>gotoxy(inf_col[num_col].startx+pos+1, y);<\/p>\n<p>break;<\/p>\n<p>case ARROW_ESC:<\/p>\n<p>_setcursortype(_NOCURSOR);<\/p>\n<p>write_cell(num_rec, y, num_col, INV_REC);<\/p>\n<p>return;<\/p>\n<p>default:<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>strcpy(Menu[num_rec].name, temp_str);<\/p>\n<p>break;<\/p>\n<p>case NUM:<\/p>\n<p>float temp = 0;<\/p>\n<p>for(int i=0; i&lt;3; i++) {<\/p>\n<p>if(i == 1) {cprintf(&quot;.&quot;);}<\/p>\n<p>key = bioskey(0);<\/p>\n<p>if(isdigit(key &amp; 0xFF)) {<\/p>\n<p>temp += (key&amp;0xFF &#8212; 0x30)*pow(10, -i);<\/p>\n<p>cprintf(&quot;%c&quot;, key);<\/p>\n<p>}<\/p>\n<p>else {<\/p>\n<p>_setcursortype(_NOCURSOR);<\/p>\n<p>return;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Menu[num_rec].price = temp;<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>_setcursortype(_NOCURSOR);<\/p>\n<p>}<\/p>\n<p>void add_record(void) {<\/p>\n<p>if(number_record &lt; 49) {<\/p>\n<p>number_record++;<\/p>\n<p>strcpy(Menu[number_record-1].name, &quot; &quot;);<\/p>\n<p>Menu[number_record-1].price = 0;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>void delete_record(int num_rec) {<\/p>\n<p>for(int i=num_rec; i&lt; number_record-1; i++)<\/p>\n<p>Menu[i] = Menu[i+1];<\/p>\n<p>number_record&#8212;;<\/p>\n<p>}<\/p>\n<p>\/\/\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u044f\u0447\u0435\u0439\u043a\u0438&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void write_cell(int num_rec, int y, int num_col, int mode)<\/p>\n<p>{<\/p>\n<p>gotoxy(inf_col[num_col].startx, y);<\/p>\n<p>textattr(mode);<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>char temp_str[40];<\/p>\n<p>int pos = 0;<\/p>\n<p>switch(inf_col[num_col].type) {<\/p>\n<p>case STR:<\/p>\n<p>strcpy(temp_str, Menu[num_rec].name);<\/p>\n<p>break;<\/p>\n<p>case NUM:<\/p>\n<p>int dec, sign, ndig = 2;<\/p>\n<p>strcpy(&amp;temp_str[1], fcvt(Menu[num_rec].price, ndig, &amp;dec, &amp;sign));<\/p>\n<p>temp_str[0] = temp_str[1];<\/p>\n<p>temp_str[1] = &#8216;.&#8217;;<\/p>\n<p>break;<\/p>\n<p>case MEMO:<\/p>\n<p>strcpy(temp_str, ch_menu[num_rec].name);<\/p>\n<p>pos = strlen(temp_str);<\/p>\n<p>strcpy(&amp;temp_str[pos], &quot; &quot;);<\/p>\n<p>temp_str[pos+3] = ch_menu[num_rec].price + 0x30;<\/p>\n<p>int dec1, sign1, ndig1 = 2;<\/p>\n<p>strcpy(&amp;temp_str[pos + 4], fcvt(ch_menu[num_rec].price, ndig1, &amp;dec1, &amp;sign1));<\/p>\n<p>temp_str[pos+3] = temp_str[pos+4];<\/p>\n<p>temp_str[pos+4] = &#8216;.&#8217;;<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>cprintf(temp_str);<\/p>\n<p>for(int i=strlen(temp_str)+1; i&lt;inf_col[num_col].lenx; i++)<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>\/\/\u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0430\u043b\u0430&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void calculate_sum_price(void)<\/p>\n<p>{<\/p>\n<p>float sum_price = 0;<\/p>\n<p>for(int i=0;i&lt;=number_chrecord-1;i++)<\/p>\n<p>sum_price += ch_menu[i].price;<\/p>\n<p>textattr(RED|CYAN&lt;&lt;4);<\/p>\n<p>goto_xy(40, 22);<\/p>\n<p>cprintf(&quot;%.2f &quot;, sum_price);<\/p>\n<p>}<\/p>\n<p>\/\/ \u0427\u0442\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u0438\u0437 \u0444\u0430\u0439\u043b\u0430&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void read_file(char *f_name) {<\/p>\n<p>FILE *fp;<\/p>\n<p>if( (fp = fopen(f_name, &quot;r+&quot;)) == NULL){<\/p>\n<p>puts(&quot;ERROR&quot;);<\/p>\n<p>exit(1);<\/p>\n<p>}<\/p>\n<p>int i, j=0;<\/p>\n<p>number_record = 0;<\/p>\n<p>char temp_str[5];<\/p>\n<p>while(!feof(fp)) {<\/p>\n<p>for(int i=0; i&lt;30; i++)<\/p>\n<p>Menu[j].name[i] = getc(fp);<\/p>\n<p>Menu[j].name[30] = &#8216;\\0&#8217;;<\/p>\n<p>for(i=0; i&lt;4; i++) {<\/p>\n<p>temp_str[i] = getc(fp);<\/p>\n<p>}<\/p>\n<p>temp_str[4] = &#8216;\\0&#8217;;<\/p>\n<p>Menu[j].price = strtof(temp_str);<\/p>\n<p>getc(fp);<\/p>\n<p>j++;<\/p>\n<p>number_record++;<\/p>\n<p>}<\/p>\n<p>fclose(fp);<\/p>\n<p>}<\/p>\n<p>void print_menu(int st_rec)<\/p>\n<p>{<\/p>\n<p>register int i, k, j;<\/p>\n<p>int end_rec;<\/p>\n<p>textbackground(CYAN);<\/p>\n<p>textcolor(WHITE);<\/p>\n<p>end_rec = 17 + st_rec;<\/p>\n<p>if(end_rec &gt; number_record-1) end_rec = number_record-1;<\/p>\n<p>for(i=0,k=st_rec; k&lt;=end_rec; i++, k++) {<\/p>\n<p>goto_xy(1, i+2);<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>cprintf(&quot;\\n%s &quot;,Menu[k].name);<\/p>\n<p>cprintf(&quot;%2.2f &quot;,Menu[k].price);<\/p>\n<p>}<\/p>\n<p>goto_xy(1, i+2);<\/p>\n<p>for(i+=3; i&lt;=20; i++) {<\/p>\n<p>goto_xy(1, i);<\/p>\n<p>for(k=0; k&lt;37; k++)<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>void print_menu1(int st_rec)<\/p>\n<p>{<\/p>\n<p>register int i, k, j;<\/p>\n<p>int end_rec;<\/p>\n<p>textbackground(CYAN);<\/p>\n<p>textcolor(WHITE);<\/p>\n<p>end_rec = 17 + st_rec;<\/p>\n<p>if(end_rec &gt; number_chrecord-1) end_rec = number_chrecord-1;<\/p>\n<p>for(i=0,k=st_rec; k&lt;=end_rec; i++, k++) {<\/p>\n<p>goto_xy(39, i+2);<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>cprintf(&quot;\\n%s &quot;,ch_menu[k].name);<\/p>\n<p>cprintf(&quot; %2.2f&quot;,ch_menu[k].price);<\/p>\n<p>}<\/p>\n<p>goto_xy(39, i+2);<\/p>\n<p>for(i+=3; i&lt;=20; i++) {<\/p>\n<p>goto_xy(39, i);<\/p>\n<p>for(k=0; k&lt;38; k++)<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>float strtof(const char* str) {<\/p>\n<p>float f = 0;<\/p>\n<p>f = str[0] &#8212; 0x30;<\/p>\n<p>f += (str[2] &#8212; 0x30)*0.1;<\/p>\n<p>f += (str[3] &#8212; 0x30)*0.01;<\/p>\n<p>return f;<\/p>\n<p>}<\/p>\n<p>\/\/\u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u0434\u0432\u043e\u0439\u043d\u0443\u044e \u0440\u0430\u043c\u043a\u0443 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>void print_status_bar(void)<\/p>\n<p>{<\/p>\n<p>textattr(WHITE|CYAN&lt;&lt;4);<\/p>\n<p>for(int i=2; i&lt;21; i++){<\/p>\n<p>goto_xy(38, i);<\/p>\n<p>cprintf(&quot;\u00a6&quot;);<\/p>\n<p>}<\/p>\n<p>for(i=1; i&lt;79; i++){<\/p>\n<p>goto_xy(i, 21);<\/p>\n<p>cprintf(&quot;=&quot;);<\/p>\n<p>}<\/p>\n<p>goto_xy(38, 21);<\/p>\n<p>cprintf(&quot;\u00a6&quot;);<\/p>\n<p>draw_doubleborder(1,2,80,24);<\/p>\n<p>goto_xy(0, 21);<\/p>\n<p>cprintf(&quot;\u00a6&quot;);<\/p>\n<p>goto_xy(79, 21);<\/p>\n<p>cprintf(&quot;\u00a6&quot;);<\/p>\n<p>textattr(WHITE|CYAN&lt;&lt;4);<\/p>\n<p>goto_xy(2, 22);<\/p>\n<p>cprintf(&quot;\u0421\u0443\u043c\u043c\u0430\u0440\u043d\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0431\u043b\u044e\u0434: \u0440\u0443\u0431. &quot;);<\/p>\n<p>goto_xy(31, 1);<\/p>\n<p>cprintf(&quot; \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043c\u0435\u043d\u044e &quot;);<\/p>\n<p>textattr(BLACK|CYAN&lt;&lt;4);<\/p>\n<p>goto_xy(1, 24);<\/p>\n<p>cprintf(&quot; \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u0438 ENTER. &quot;);<\/p>\n<p>}<\/p>\n<p>\/\/\u0412\u044b\u0432\u043e\u0434 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043c\u0435\u043d\u044e&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void print_head(void)<\/p>\n<p>{<\/p>\n<p>textattr(BLUE|CYAN&lt;&lt;4);<\/p>\n<p>goto_xy(4, 2);<\/p>\n<p>cprintf(text_head[0]);<\/p>\n<p>goto_xy(49, 2);<\/p>\n<p>cprintf(text_head[1]);<\/p>\n<p>}<\/p>\n<p>\/\/\u0412\u044b\u0432\u043e\u0434 \u043e\u043a\u043d\u0430 &quot;\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435&quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void print_about(void)<\/p>\n<p>{<\/p>\n<p>void *buf;<\/p>\n<p>buf = malloc(60*17*2);<\/p>\n<p>gettext(15, 4, 66, 22, buf);<\/p>\n<p>show_window(15, 4, 65, 21);<\/p>\n<p>goto_xy(32, 3);<\/p>\n<p>cprintf(&quot; \u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 &quot;);<\/p>\n<p>goto_xy(30, 5);<\/p>\n<p>textattr(WHITE|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>cprintf(&quot; \u041a\u0423\u0420\u0421\u041e\u0412\u0410\u042f \u0420\u0410\u0411\u041e\u0422\u0410 &quot;);<\/p>\n<p>goto_xy(34, 7);<\/p>\n<p>cprintf(&quot; \u041d\u0410 \u0422\u0415\u041c\u0423: &quot;);<\/p>\n<p>goto_xy(31, 9);<\/p>\n<p>textattr(RED|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>cprintf(&quot; \u0420\u0415\u0414\u0410\u041a\u0422\u041e\u0420 \u041c\u0415\u041d\u042e&quot;);<\/p>\n<p>textattr(WHITE|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>goto_xy(15, 12);<\/p>\n<p>cprintf(&quot; \u0420\u0430\u0431\u043e\u0442\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c&quot;);<\/p>\n<p>goto_xy(15, 13);<\/p>\n<p>cprintf(&quot; \u0441\u0442\u0443\u0434\u0435\u043d\u0442 \u0433\u0440\u0443\u043f\u043f\u044b \u0418\u042296\u04122 \u0441\u0442. \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c&quot;);<\/p>\n<p>goto_xy(15, 14);<\/p>\n<p>cprintf(&quot; \u0411\u0435\u043b\u043e\u0443\u0441\u043e\u0432 \u0421.\u0410. \u0411\u0430\u0448\u043a\u0430\u0442\u043e\u0432 \u0410.\u041c.&quot;);<\/p>\n<p>goto_xy(30, 19);<\/p>\n<p>cprintf(&quot; \u0422\u0418\u0420\u0410\u0421\u041f\u041e\u041b\u042c 2000\u0433.&quot;);<\/p>\n<p>bioskey(0);<\/p>\n<p>puttext(15, 4, 66, 22, buf);<\/p>\n<p>free(buf);<\/p>\n<p>}<\/p>\n<p>\/\/\u0412\u044b\u0432\u043e\u0434 \u043e\u043a\u043d\u0430 &quot;\u0421\u043f\u0440\u0430\u0432\u043a\u0430&quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void print_reference(void)<\/p>\n<p>{<\/p>\n<p>void *buf;<\/p>\n<p>buf = malloc(60*17*2);<\/p>\n<p>gettext(10, 4, 71, 22, buf);<\/p>\n<p>show_window(10, 4, 70, 21);<\/p>\n<p>goto_xy(29, 3);<\/p>\n<p>cprintf(&quot;&lt;\u0413\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438&gt;&quot;);<\/p>\n<p>textattr(WHITE|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>int k=0;<\/p>\n<p>for(int i=0; i&lt;8;i++){<\/p>\n<p>goto_xy(12, 5+k);<\/p>\n<p>cprintf(reference[i][0]);<\/p>\n<p>for(int j=12+strlen(reference[i][0]); j&lt;60; j++)<\/p>\n<p>cprintf(&quot;.&quot;);<\/p>\n<p>cprintf(reference[i][1]);<\/p>\n<p>k+=2;<\/p>\n<p>}<\/p>\n<p>bioskey(0);<\/p>\n<p>puttext(10, 4, 71, 22, buf);<\/p>\n<p>free(buf);<\/p>\n<p>}<\/p>\n<p>\/\/ \u0412\u044b\u0432\u043e\u0434 \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void show_window (int startx,int starty,int endx,int endy)<\/p>\n<p>{<\/p>\n<p>textattr(BLACK|BLUE&lt;&lt;4);<\/p>\n<p>for(int i=startx; i&lt;endx+1; i++) {<\/p>\n<p>goto_xy(i, endy);<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>for(i=starty; i&lt;endy; i++) {<\/p>\n<p>goto_xy(endx, i);<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>textattr(BLACK|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>for(i=startx; i&lt;endx-1; i++) {<\/p>\n<p>for(int j=starty; j&lt;endy-1; j++) {<\/p>\n<p>goto_xy(i, j);<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>draw_border(startx, starty, endx, endy);<\/p>\n<p>}<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void create_file(void) {<\/p>\n<p>textattr(WHITE|CYAN);<\/p>\n<p>for(int i=3; i&lt;=20; i++) {<\/p>\n<p>goto_xy(39, i);<\/p>\n<p>for(int k=0; k&lt;38; k++)<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>strcpy(file_name, &quot;noname.mnu&quot;);<\/p>\n<p>number_record = 1;<\/p>\n<p>number_chrecord = 0;<\/p>\n<p>strcpy(Menu[number_record-1].name, &quot; &quot;);<\/p>\n<p>Menu[number_record-1].price = 0;<\/p>\n<p>strcpy(ch_menu[number_chrecord-1].name, &quot; &quot;);<\/p>\n<p>ch_menu[number_chrecord-1].price = 0;<\/p>\n<p>new_file = 1;<\/p>\n<p>calculate_sum_price();<\/p>\n<p>print_menu1(0);<\/p>\n<p>print_status_file();<\/p>\n<p>}<\/p>\n<p>int open_file(void)<\/p>\n<p>{<\/p>\n<p>char name_f[15][20];<\/p>\n<p>struct ffblk f;<\/p>\n<p>register int done, num_f = 0, i = 0;<\/p>\n<p>done = findfirst(&quot;*.mnu&quot;, &amp;f, 0);<\/p>\n<p>while(!done &amp;&amp; num_f&lt;=14) {<\/p>\n<p>strcpy(name_f[num_f], f.ff_name);<\/p>\n<p>num_f++;<\/p>\n<p>done = findnext(&amp;f);<\/p>\n<p>}<\/p>\n<p>show_window(10, 5, 28, 20);<\/p>\n<p>if(num_f == 0) {<\/p>\n<p>goto_xy(13, 6);<\/p>\n<p>textattr(RED|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>cprintf(&quot;\u041d\u0435\u0442 \u0444\u0430\u0439\u043b\u043e\u0432&quot;);<\/p>\n<p>bioskey(0);<\/p>\n<p>return 1;<\/p>\n<p>}<\/p>\n<p>for(i=0; i&lt;num_f; i++) {<\/p>\n<p>goto_xy(11, 5+i);<\/p>\n<p>cprintf(&quot;%s&quot;, name_f[i]);<\/p>\n<p>}<\/p>\n<p>textbackground(CYAN);<\/p>\n<p>int key =0;<\/p>\n<p>i=0;<\/p>\n<p>print_str( name_f[0], 11, 15, 5, INVERSE);<\/p>\n<p>while(key != ARROW_ENTER) {<\/p>\n<p>key = bioskey(0);<\/p>\n<p>switch(key) {<\/p>\n<p>case ARROW_DOWN:<\/p>\n<p>print_str( name_f[i], 11, 15, 5+i, NORMAL);<\/p>\n<p>if(i == num_f-1) i = 0;<\/p>\n<p>else i++;<\/p>\n<p>print_str( name_f[i], 11, 15, 5+i, INVERSE);<\/p>\n<p>break;<\/p>\n<p>case ARROW_UP:<\/p>\n<p>print_str( name_f[i], 11, 15, 5+i, NORMAL);<\/p>\n<p>if(i == 0) i = num_f-1;<\/p>\n<p>else i&#8212;;<\/p>\n<p>print_str( name_f[i], 11, 15, 5+i, INVERSE);<\/p>\n<p>break;<\/p>\n<p>case ARROW_ESC:<\/p>\n<p>return ESC;<\/p>\n<p>case ARROW_ENTER:<\/p>\n<p>strcpy(file_name, name_f[i]);<\/p>\n<p>read_file(file_name);<\/p>\n<p>print_status_file();<\/p>\n<p>\/\/ calculate_average_mark();<\/p>\n<p>new_file = 1;<\/p>\n<p>break;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>number_chrecord = 0;<\/p>\n<p>calculate_sum_price();<\/p>\n<p>for(i=3; i&lt;=20; i++) {<\/p>\n<p>goto_xy(39, i);<\/p>\n<p>for(int k=0; k&lt;39; k++)<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>return 0;<\/p>\n<p>}<\/p>\n<p>void print_str(char* str, int x, int len, int y, int mode) {<\/p>\n<p>int i = 0;<\/p>\n<p>textattr(mode);<\/p>\n<p>goto_xy(x, y);<\/p>\n<p>cprintf(str);<\/p>\n<p>for(i=x+strlen(str); i&lt;=x+len; i++) {<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>void main(void) { textbackground(CYAN); clrscr(); init_popup(vert_menu[0], 5, 1, 4, 3, 0); init_popup(vert_menu[1], 2, 1, 13, 3, 1); init_popup(vert_menu[2], 2, 1, 22, 3, 2);<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[67],"tags":[],"_links":{"self":[{"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/posts\/7736"}],"collection":[{"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7736"}],"version-history":[{"count":0,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/posts\/7736\/revisions"}],"wp:attachment":[{"href":"https:\/\/studentpmr.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}