Перейти к содержимому

Фото
- - - - -

[c++] Проблемма


  • Вы не можете создать новую тему
  • Please log in to reply
13 ответов в этой теме

#1 libricon

libricon
  • Постоялец
  • 572 сообщений
  • Откуда:Маарду

Отправлено 25 Декабрь 2004 - 13:09

Такая вот проблемма. У меня есть 8 функций, скажем включается каждая при нажатии 1,2,3..8 , как мне сделать, чтоб при нажатии 1 , к примеру, включилась 1 функция, при нажатии 5 пятая .
Если я правельно понимаю, надо делать два потока, первый считывать будет мои нажатия, а второйвыполнять функции.
  • 0
Пингвин птица гордая, пока не пнешь, не полетит!!!

#2 Juri S.

Juri S.
  • Пользователь
  • 104 сообщений
  • Откуда:Tallinn

Отправлено 25 Декабрь 2004 - 20:03

libricon, Так ты скажи более нормально что тебе надо!что ты сказал вообще не понятно...
  • 0

#3 libricon

libricon
  • Постоялец
  • 572 сообщений
  • Откуда:Маарду

Отправлено 26 Декабрь 2004 - 10:14

я сам не понял.
короче мне надо, чтоб функция постоянно выполнялась, и реагировала на введеные пользователем числа не прекращая выполнение
  • 0
Пингвин птица гордая, пока не пнешь, не полетит!!!

#4 Solid

Solid
  • Новобранец
  • 3 сообщений

Отправлено 27 Декабрь 2004 - 09:39

libricon, давай начнём с начала: тебе нужно сделать консольное приложение, или windows форму? Хотя как я понимаю, здесь до windows-form ещё далеко. В общем, если всё это дело должно происходить в консоли, тогда делай таким образом:
char ch;
while((ch = getchar()) != '\n' && ch != EOF) {
 if(ch == '1') {
   function1();
 }
  if(ch == '2') {
   function2();
  }
}
Только не забудь в начале подключить библиотеку stdio.h. Надеюсь, знаешь что это такое.
  • 0

#5 libricon

libricon
  • Постоялец
  • 572 сообщений
  • Откуда:Маарду

Отправлено 27 Декабрь 2004 - 20:02

не то, вот к примеруц нажали 1 , функция выполнилась разок и все, опять ввода ждет! а мне надо , что она выполнялась фоном , т. е было постоянно активна! я так понимаю надо делать второй поток, функцией fork , но чето влом, может есть другое решение?
  • 0
Пингвин птица гордая, пока не пнешь, не полетит!!!

#6 crazy russian

crazy russian
  • Пользователь
  • 153 сообщений

Отправлено 28 Декабрь 2004 - 10:48

libricon, делай через потоки. Это наиболее эффективный вариант в твоем случае. Можешь сам реализовать псевдо-мультипоточность, но лучше чем в ОС это уже реализовано ты сделать не сможешь.
  • 0

#7 Solid

Solid
  • Новобранец
  • 3 сообщений

Отправлено 28 Декабрь 2004 - 13:06

Делай через Event'ы.
http://msdn.microsof...a.onkeydown.asp

Сообщение изменено: Solid (28 Декабрь 2004 - 13:24 )

  • 0

#8 libricon

libricon
  • Постоялец
  • 572 сообщений
  • Откуда:Маарду

Отправлено 28 Декабрь 2004 - 19:32

а разве события в консоли линукса тоже так же работают?
  • 0
Пингвин птица гордая, пока не пнешь, не полетит!!!

#9 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 28 Декабрь 2004 - 20:17

libricon, давай начнём с начала: тебе нужно сделать консольное приложение, или windows форму? Хотя как я понимаю, здесь до windows-form ещё далеко. В общем, если всё это дело должно происходить в консоли, тогда делай таким образом:

char ch;
while((ch = getchar()) != '\n' && ch != EOF) {
 if(ch == '1') {
   function1();
 }
  if(ch == '2') {
   function2();
  }
}
Только не забудь в начале подключить библиотеку stdio.h. Надеюсь, знаешь что это такое.

Просмотреть сообщение

неправильно, переменная ch должна быть типа int , чтобы ее можно было сравнивать с EOF
  • 0
int main(void)

#10 libricon

libricon
  • Постоялец
  • 572 сообщений
  • Откуда:Маарду

Отправлено 28 Декабрь 2004 - 23:02

наверно так. еоф целое число
  • 0
Пингвин птица гордая, пока не пнешь, не полетит!!!

#11 Solid

Solid
  • Новобранец
  • 3 сообщений

Отправлено 29 Декабрь 2004 - 13:47

неправильно, переменная ch должна быть типа int , чтобы ее можно было сравнивать с EOF

Просмотреть сообщение

Что теперь то?! Человеку не это главное. Лучше бы, раз такой умный, помог человеку понять, как ему делать лучше, нежели пальцами крутить.

Добавлено в [mergetime]1104320821[/mergetime]
libricon, так ты говори русским языком.. тебе надо в linux, консольное приложение. А то, мне нужна код программы, которая бы срабатывала при нажатии кнопок, и всегда была рабочая, но на заднем плане. Я и подумал, может быть всё дело в windows происходит, кинул инфу от mfc.
В линуксе не рублю, так что помочь тут ничем не могу.
  • 0

#12 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 29 Декабрь 2004 - 15:40

Что теперь то?! Человеку не это главное. Лучше бы, раз такой умный, помог человеку понять, как ему делать лучше, нежели пальцами крутить.

то, что ты даешь человеку - неправильный код. кроме того явно не то что нужно...

libricon, fork() создает не поток, а дочерний процесс. я думаю тебе нужны pthreads
  • 0
int main(void)

#13 libricon

libricon
  • Постоялец
  • 572 сообщений
  • Откуда:Маарду

Отправлено 29 Декабрь 2004 - 21:55

порыщем, попробуем, если что, отращусь за помощбю
  • 0
Пингвин птица гордая, пока не пнешь, не полетит!!!

#14 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 9 137 сообщений
  • Откуда:Таллин

Отправлено 24 Март 2005 - 14:36

Хмда... объясняют как делать а ты все нет мне надо нажать 1...

Сообщение изменено: Zero (24 Март 2005 - 14:36 )

  • 0
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!