Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Время выполнения проги 
:(
    Опции темы
1122
Дата 17.5.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



Всем привет. Как сделать так, чтобы программа выполнялась только, например, 5 минут. Заранее спасибо.
PM MAIL   Вверх
archimed7592
Дата 17.5.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



1122, а по истечению 5-ти минут что будет(должно быть)?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
1122
Дата 17.5.2008, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



Конец программы. Ну в принципе не важно, что должно быть (вывод меню на экран или еще что-нибудь). Или Например в цикле увеличивать переменную на единицу в течении пяти минут, а потом выход из цикла (или из функции, в которой цикл)....

PM MAIL   Вверх
rrrFer
Дата 17.5.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



1122
Цитата

Как сделать так, чтобы программа выполнялась только, например, 5 минут

Можно так(неоптимально наверно):
Код

#include<time.h>
void main(){
    time_t t1,t2;
    int i,j;
    for(i=0,time(&t1),time(&t2);difftime(t2,t1)<60*5;i++,time(&t2))
        j=i;
}

PM MAIL WWW ICQ   Вверх
1122
Дата 17.5.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



Спасибо.
А как данный пример адаптировать к задаче такого рода:
"Создать игру. С верхней части экрана падают шарики. Управляя боченком, игрок должен собрать как можно больше шаров за одну минуту."

И что возвращает функция difftime(t2,t1)? 
PM MAIL   Вверх
rrrFer
Дата 18.5.2008, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



Цитата

И что возвращает функция difftime(t2,t1)? 

очевидно разность времен t2 и t1, которые определяются в момент вызова time(&t2) и time(&t1) соответственно (в секундах)
Цитата

А как данный пример адаптировать к задаче такого рода:
"Создать игру. С верхней части экрана падают шарики. Управляя боченком, игрок должен собрать как можно больше шаров за одну минуту."

Возможно так:
 
Код

 for(time(&t1),time(&t2);difftime(t2,t1)<60;time(&t2)){
         падает шарик;
    }

ну и аналогично там где идет управление бочонком


Это сообщение отредактировал(а) rrrFer - 18.5.2008, 06:44
PM MAIL WWW ICQ   Вверх
LostSoul
Дата 18.5.2008, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.5.2007

Репутация: нет
Всего: нет



WinApi пользоваться можно? Если да, то такое просто реализовать с двумя потоками. В одном - ожидание 5 минут, во втором - код игры. 
PM MAIL   Вверх
rrrFer
Дата 18.5.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



LostSoul
создать вспомогательны процесс можно и без WinApi, выглядеть это может например так:
Код

#include <windows.h>
void main(){
    const int m=60000;
    system("cmd /c start D:\\myprocess.exe");
    Sleep(m/30);
    system("cmd /c taskkill /im myprocess.exe");
}

однако тут есть ряд проблем:
во-первых при использовании system или ShellExecute или CreateProcess или функций типа exec(например execve) -надо указывать полный путь к исполняемой программе. Путь конечно определить можно, но зачем так сложно решать задачу непонятно, или можно использовать средства командной строки для поиска этого файла - это конечно очень просто, однако рабоать будет долго...
во-вторых время будет отсчитываться только пока на этом приложении будет установлен фокус, однако "1122" пишет игру и поэтому явно фокус будет установлен именно на игре, а значит, поток отсчета времени будет вытеснен и Sleep(m/30); будет выполняться весно smile
кстати, m/30 - это 2 секунды, если тебе надо 5 минут, то пиши m*5

Это сообщение отредактировал(а) rrrFer - 18.5.2008, 13:40
PM MAIL WWW ICQ   Вверх
1122
Дата 18.5.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



Спасибо. Завтра поэксперементирую!
PM MAIL   Вверх
archimed7592
Дата 18.5.2008, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(rrrFer @  18.5.2008,  13:37 Найти цитируемый пост)
-надо указывать полный путь к исполняемой программе.

Зачем? 0_о

Добавлено через 40 секунд
(я про std::system)...


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
rrrFer
Дата 20.5.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



archimed7592
Цитата

Зачем? 0_о

Код

 system("cmd /c start D:\\myprocess.exe");

а что ты предлагаешь написать тут вместо D:\\myprocess.exe?

Это сообщение отредактировал(а) rrrFer - 20.5.2008, 08:26
PM MAIL WWW ICQ   Вверх
archimed7592
Дата 20.5.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(rrrFer @  18.5.2008,  13:37 Найти цитируемый пост)
однако тут есть ряд проблем:
во-первых при использовании system или ShellExecute или CreateProcess или функций типа exec(например execve) -надо указывать полный путь к исполняемой программе.

Цитата(rrrFer @  20.5.2008,  08:24 Найти цитируемый пост)
а что ты предлагаешь написать тут вместо D:\\myprocess.exe?

Я ничего не предлагаю. Я лишь хотел уточнить зачем нужно писать полный путь к исполняемому файлу, если это проблема...


Это сообщение отредактировал(а) archimed7592 - 20.5.2008, 14:19


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
rrrFer
Дата 20.5.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



archimed7592
путь к исполняемой программе надо, чтобы ее исполнить
PM MAIL WWW ICQ   Вверх
archimed7592
Дата 20.5.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(rrrFer @  20.5.2008,  14:28 Найти цитируемый пост)
путь к исполняемой программе надо, чтобы ее исполнить 

Делаю 
Код
std::system("ReportGenerator");

И ничего не надо...
Со start то же самое.
Если исполняемый файл находится в текущей директории(для windows) или путь к нему находится в PATH, то, очевидно, ничего не требуется.
Другое дело, что если он не находится в текущей директории и путь к нему не присутствует в PATH, но это уже проблема не std::system, а кого-то другого.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
rrrFer
Дата 20.5.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



ммм...
Цитата
1:
Код

std::system("ReportGenerator");


это что?
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.