Смекни!
smekni.com

Преобразования информации перед передачей её в канал связи (стр. 2 из 2)

2 . Корриган Джон : С++ основы программирования: Пер с англ. -М.:Энтроп, 1995. - 352 с., ил.

ПРИЛОЖЕНИЕ А

(обязательное)

Текст программы ptrov.cpp приведён в таблице А1

Таблица А1

Команда Пояснение
#include <stdio.h>#include <conio.h>#include <string.h>struct win_info{int x1, y1, x2, y2 int tc, tb int px, py char fname[50] }win[2] FILE *in, *out char c, ch int i void SetWin(win_info * w) { textcolor(w->tc) textbackground(w->tb) window(w->x1,w->y1,w->x2,w->y2) gotoxy(w->px,w->py) }void GetWin(win_info * w) {w->px=wherex() w->py=wherey() }char perest(char x){if ((x>=0x40)&(x<=0x5f)) { char mask, buf[4] if (x>=0x50) mask=0x50 else mask=0x40 x^=mask buf[0]=(x&1) buf[1]=(x&2)/2 buf[2]=(x&4)/4 buf[3]=(x&8)/8 x=buf[1]+buf[0]*2+buf[3]*4+buf[2]*8 x^=mask }return x }void main(){textbackground(WHITE) textcolor(BLACK) clrscr() for(i=1 i<2000 i++) putchar(176) window(1,25,80,25) textcolor(BLACK) textbackground(WHITE) clrscr() cprintf(" ALT-F1 Исходн.файл ALT-F2 Конечн.файл ALT-F3 Кодир. ALT-F4 Декодир. ESC-Выход") win[0].x1=2 win[1].x1=2 win[0].x2=79 win[1].x2=79 win[0].y1=3 win[1].y1=14 win[0].y2=12 win[1].y2=23 win[0].py=1 win[1].px=1 win[0].px=1 win[1].py=1 win[0].tc=LIGHTBLUE win[1].tc=LIGHTBLUE win[0].tb=BLUE win[1].tb=BLUE window(1,1,80,1) textcolor(BLACK) textbackground(WHITE) clrscr() _setcursortype(_NOCURSOR) do{ch=getch() if (ch==0) switch(getch()){ координаты окнацвета окнапозиция курсораимя файлаактивизировать рабочее окно иустановить курсор в текущую позициюсчитать поз. курсорапроверка на принадлежность кобрабатываемым символамобнулить половину кодаразложить по битамсобрать биты в обратном порядкевосстановить половину кодавернуть новый символсоздать рабочий экранзадать параметры рабочих окон
Команда Пояснение
case 104 : fclose(in) // Нажата ALT-F1 win[0].px=1 win[0].py=1 window(1,1,80,1) textcolor(BLACK) textbackground(WHITE) clrscr() printf(" Введите имя исходного файла : ") _setcursortype(_NORMALCURSOR) gets(win[0].fname) _setcursortype(_NOCURSOR) window(1,2,80,12) clrscr() for(i=1 i<=880 i++) putchar(176) if((in=fopen(win[0].fname,"rt"))==NULL) {window(1,1,80,1) textcolor(RED) clrscr() printf(" %cНемогуоткрытьфайл - %s - !!!",7,&win[0].fname) } else { textcolor(RED) textbackground(WHITE) window(39-strlen(win[0].fname)/2,2,41+strlen(win[0].fname)/2,2) clrscr() printf(" %s",&win[0].fname) SetWin(&win[0]) clrscr() while(!feof(in)) {c=fgetc(in) if(c!='&bsol;n') putch(c) else { if (wherey()==10) break cprintf("&bsol;n&bsol;r") } } } break case 105 : fclose(out) win[1].px=1 win[1].py=1 window(1,1,80,1) textcolor(BLACK) textbackground(WHITE) clrscr() printf(" Введитеимяконечногофайла : ") _setcursortype(_NORMALCURSOR) gets(win[1].fname) _setcursortype(_NOCURSOR) window(1,13,80,23) clrscr() for(i=1 i<=880 i++) putchar(176) if((out=fopen(win[1].fname,"wt"))==NULL) {window(1,1,80,1) textcolor(RED) clrscr() printf("%c Немогусоздатьфайл - %s - !!!",7,&win[1].fname) } else { textcolor(RED) textbackground(WHITE) window(39-strlen(win[1].fname)/2,13,41+strlen(win[1].fname)/2,13) clrscr() printf(" %s",&win[1].fname) SetWin(&win[1]) clrscr() } break case 106 : if((in!=NULL)&(out!=NULL)) { c=0 i=0 SetWin(&win[0]) clrscr() GetWin(&win[0]) SetWin(&win[1]) clrscr() GetWin(&win[1]) fseek(in,0,0) fseek(out,0,0) while(!feof(in)) Нажата ALT-F2ALT-F3
Команда Пояснение
{ch=fgetc(in) SetWin(&win[0]) if (ch!='&bsol;n') putch(ch) else cprintf("&bsol;n&bsol;r") GetWin(&win[0]) ch=perest(ch) SetWin(&win[1]) if (ch!='&bsol;n') putch(ch) else cprintf("&bsol;n&bsol;r") GetWin(&win[1]) c^=ch i++ fputc(ch,out) if (i==3){ SetWin(&win[1]) if (c!='&bsol;n') putch(c) else cprintf("&bsol;n&bsol;r") GetWin(&win[1]) fputc(c,out) c=0 i=0 } } } break case 107 : if((in!=NULL)&(out!=NULL)) { ch=0 i=0 SetWin(&win[0]) clrscr() GetWin(&win[0]) SetWin(&win[1]) clrscr() GetWin(&win[1]) fseek(in,0,0) fseek(out,0,0) while(!feof(in)) if (i!=3) {c=fgetc(in) SetWin(&win[0]) if (c!='&bsol;n') putch(c) else cprintf("&bsol;n&bsol;r") GetWin(&win[0]) ch^=c i++ c=perest(c) SetWin(&win[1]) if (c!='&bsol;n') putch(c) else cprintf("&bsol;n&bsol;r") GetWin(&win[1]) fputc(c,out) } else {c=fgetc(in) SetWin(&win[0]) if (c!='&bsol;n') putch(c) else cprintf("&bsol;n&bsol;r") GetWin(&win[0]) if (c==ch){ ch=0 i=0 } else{ textcolor(RED) textbackground(WHITE) window(1,1,80,1) clrscr() printf(" %cОшибкавфайле %s",7,&win[0].fname) break } } } break }}while(ch!=27) fcloseall() textcolor(WHITE) textbackground(BLACK) window(1,1,80,25) clrscr() } ALT-F4выход, если нажат ESCзакрыть все файлыочистить экран

ПРИЛОЖЕНИЕ В

РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ

Введите имя конечного файла : zzz

____________________________________ file _____________________________________

_Проверка программы преобразования информации_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_____________________________________ zzz ______________________________________

_Про-верчка *просграуммыы прoеобкразчовамнияъ ин%форкмацъии__ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

________________________________________________________________________________

ALT-F1 Исходн.файл ALT-F2 Конечн.файл ALT-F3 Кодир. ALT-F4 Декодир. ESC-Выход