![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.02.2012
Сообщений: 5
|
![]()
Содержимое файла run.bat:
prog.exe>out.txt @pause Исходный текст программы #include<cstdlib> #include<stdio.h> #include<conio.h> usingnamespacestd; //числовое представления состояний для использования в теле цикла #define S0 0 #define S1 1 #define S2 2 #define S3 3 #define S4 4 #define S5 5 #defineX1 (x & 1) //сравнение с 0b00000001 #defineX2 (x & 2) //сравнение с 0b00000010 #defineX3 (x & 4) //сравнение с 0b00000100 //текстовое представление состояний для вывода #defines0 "S0" #define s1 "S1" #define s2 "S2" #define s3 "S3" #define s4 "S4" #define s5 "S5" //текстовое представление возможных выводов Y #define OUT0 "[ - ]" #define OUT1 "[Y1,Y4 ]" #define OUT2 "[Y2,Y4 ]" #define OUT3 "[Y1,Y5 ]" #define OUT4 "[Y1,Y3,Y5]" #define OUT5 "[Y2,Y3,Y5]" // Читаемвходнойфайл unsigned char read(FILE *fl) { unsigned int x = 0; int r = fscanf(fl,"%u",&x);//читаемсимвол if(r == EOF) {//если конец файла - закрыть файл и завершить программу fclose(fl); exit(0); }; return (unsigned char)x; } //Перевод числа Х в текстовое представление char* XToStr(unsigned char x) { char *c = (char*)malloc(11);//максимально возможное количество символов в строке int j = 0;//счетчик символов в выводимой строке for(inti = 0; i<= 2; i++)//циклот 2годо 0гобита { if(((1<<i) & x)>0) {//вывод еденичного Х и его номера по ASCII коду c[j] = ' '; j++; c[j] = 'X'; j++; c[j] = 49+i; j++; } else {//вывод нулевого Х c[j] = '!'; j++; c[j] = 'X'; j++; c[j] = 49+i; j++; } if(i < 2) {//установка запятых если выводится 3й и 2й Х c[j] = ','; j++; } } return c; } //вывод на экран строки о результатах работы программы //выводит старое состояние, введённый Х, выводимые Y и новое состояние void printstr(char* oldstate, char* statename, unsigned char x, char* out) { char *x_str; x_str = XToStr(x); printf("sstate = %s, X = [%s], Y = %s, STATE = %s \n",oldstate,x_str,out,statename) ; free(x_str);//освобождение памяти для строки с Х, выделенной в функции XToStr() } int main(intargc, char** argv) { FILE *f; f = fopen("x.txt","r");//открытие файла для чтения if(f == 0) { printf("не могу открыть файл '%s'","x.txt"); return 0; } unsigned int s = S0; for(; ![]() { unsigned char x = 0; x = read(f); //чтениеХизфайла switch(s)//выполнение согласно текущему состоянию s { case S0: if(X2) {// X2 - - s = S0; printstr(s0,s0,x,OUT0); }else{// !X2 - Y1,Y3,Y5 s = S1; printstr(s0,s1,x,OUT4); } break; case S1:// - Y2,Y4 s = S2; printstr(s1,s2,x,OUT2); break; case S2: if(X2) { if(X3) {//!X1,X2,X3 - - s = S3; printstr(s2,s3,x,OUT0); }else{ if(X1) {//X1,X2,!X3 - - s = S3; printstr(s2,s3,x,OUT0); }else{//!X1,X2,!X3 - Y2,Y3,Y5 s = S5; printstr(s2,s5,x,OUT5); } } }else{//!X1,!X2,!X3 - Y1,Y4 s = S3; printstr(s2,s3,x,OUT1); } break; case S3: // - - Y1,Y5 s = S4; printstr(s3,s4,x,OUT3); break; case S4: // - - Y2,Y3,Y5 s = S5; printstr(s4,s5,x,OUT5); break; case S5: if(X1) {// X1 - - s = S0; printstr(s5,s0,x,OUT0); }else{ if(X2) { if(X3) {//!X1,X2,X3 - - s = S3; printstr(s5,s3,x,OUT0); }else{//!X1,X2,!X3 - Y2,Y3,Y5 s = S5; printstr(s5,s5,x,OUT5); } }else{//!X1,!X2,!X3 - Y1,Y4 s = S3; printstr(s5,s3,x,OUT1); } } break; default: break; } } fclose(f); return 0; } |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]()
Самый быстрый способ, который могу посоветовать - откомпилированный exe-шник пройди дизассемблером и немножко привести к нормальному виду.
Правильно поставленная задача - три четверти решения.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 16.04.2012
Сообщений: 11
|
![]()
Да зачем дизассемблер! Легче найти Tasm32 и открыть скомпилированную программу.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как перевести прогу с ассемблера? | Artur140 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 24.10.2011 13:59 |
Нужно перевести прогу с Фортрана на Паскаль! | Segger | Помощь студентам | 0 | 01.12.2010 07:27 |
Нужно сделать прогу | DJon82 | Фриланс | 6 | 23.08.2010 16:00 |