![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 16.11.2008
Сообщений: 3
|
![]()
нужно изменить программу так, чтобы при нажатии клавиши символа добавлялся символ справа, а при нажатии backspace удалялся последний символ. помогите кто чем может
![]() // при нажатии "1" -> F=F+1 (операция 1) // при нажатии "0" -> F=F-1 (операция 2) #include <windows.h> #include <conio.h> #include <iostream.h> #include <time.h> HANDLE hThread; // дескриптор создаваемого потока DWORD IDThread; // идентификатор потока DWORD ThreadProc(log *p); // функция потока (параметр - // указатель на структуру log) int F=0; // разделяемая глобальная переменная clock_t wtime=100; // время задержки (мс) void waiting(clock_t dt); // функция задержки // Журнал struct log { int nom; // порядковый номер операции int key; // код нажатой клавиши DWORD ID; // идентификатор созданного потока clock_t t1; // время начала операции clock_t t2; // время завершения операции int F; // результат операции в дочернем потоке int Fc; // результат операции главном потоке // (переменная-дублер) } mylog[1000]; // не более 1000 строк в журнале //=================================== ============== int main() // главный поток { int i=0; // счетчик операций int j=1; // счетчик вывода строк журнала int key=1; // код нажатой клавиши int flag=1; // признак завершения программы int Fcontr; // переменная-дублер mylog[1].t2=0; // признак того, что поток не завершен Fcontr=F; // повторять пока flag !=0 или i<1000 while (flag || i >=1000) { //Прием кода нажатой клавиши if (kbhit()!= 0) { key= getch(); // формирование переменной-дублера if (key == 48) Fcontr=--Fcontr; else Fcontr=++Fcontr; //Проверка кода нажатой клавиши switch (key) { case 27 : {flag=0; break;} // признак выхода из // программы (Esc) case 48 : // нажата клавиша "0" case 49 : // нажата клавиша "1" { i=++i; //следующая операция // формируем строку журнала mylog[i].nom=i; mylog[i].key=key; mylog[i].t2=0; mylog[i].F=0; mylog[i].Fc=Fcontr; mylog[i].t1=clock(); // создание потока без немедленного запуска hThread= CreateThread(NULL,0,ThreadProc,&myl og[i],CREATE_SUSPENDED,&IDThread); if (hThread == NULL) { cout << "Thread error" << key << endl; getch(); return 0; } else { // запуск потока mylog[i].ID=IDThread; ResumeThread(hThread); } } } } // завершение работы потока проверяется по // сформированному в функции // потока значению времени t2 if (mylog [j].t2!=0) { // вывод j-й строки журнала cout << j << " " << mylog[j].key << " " << mylog[j].ID << " " << mylog[j].t1 << " " << mylog[j].t2 << " " << mylog[j].F << " " << mylog[j].Fc <<endl; j=++j; // следующая строка журнала } } // повторять пока flag !=0 или i<1000 getch(); return 0; } // функция потока: имитация "чтения", корректировки // и "записи" разделяемой переменной F // параметр - указатель на текущую строку журнала DWORD ThreadProc(log *p) { int Fbuf; // чтение разделяемой переменной в буферную переменную Fbuf=F; waiting(wtime); // задержка // корректировка буферной переменной if ((*p).key == 48) Fbuf=--Fbuf; else Fbuf=++Fbuf; waiting(wtime); // задержка // запись из буферной переменной в разделяемую переменную F=Fbuf; // запись результата в текущую строку журнала (*p).F=F; (*p).t2=clock(); // время окончания работы потока return 0; } // функция задержки // параметр - время задержки в мс void waiting(clock_t dt) { clock_t tn; tn=clock(); while (clock()-tn < dt); return; } |
![]() |
![]() |
![]() |
#2 |
Регистрация: 16.11.2008
Сообщений: 3
|
![]()
ну пожалуйста, помогите, кто-нибудь!!!
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
организация меню | Juffin | Общие вопросы Delphi | 1 | 24.05.2009 12:02 |
Организация циклов | faelar | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 25.01.2009 21:30 |
Организация поиска) | insomnia87 | Microsoft Office Excel | 9 | 22.01.2009 11:56 |
Организация сокетов | mar4elo | Работа с сетью в Delphi | 1 | 01.01.2009 16:50 |
Организация сети | ryton | Свободное общение | 7 | 25.06.2008 07:46 |