infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Stanciulescu Daniel din Decembrie 05, 2008, 22:30:57



Titlul: Evaluator
Scris de: Stanciulescu Daniel din Decembrie 05, 2008, 22:30:57
Cum as putea face si eu un evaluator cu care sa imi testez timpul de executie?
Daca se poate si mai mult v-asi ramane recunoscator.
Multumesc! :D


Titlul: Răspuns: Evaluator
Scris de: Cezar Mocan din Decembrie 06, 2008, 00:36:47
Cod:
 
#include <stdlib.h>
#include <time.h>

int main ()
{
  time_t start,end;
  double dif;

  time (&start);
  system("program.exe");
  time (&end);
  dif = difftime (end,start);

  printf("%.3f\n", dif); 

  return 0;
}

Ar trebuie sa mearga... iti afiseaza numarul de secunde cu 3 zecimale. Trebuie sa pui asta in acelasi folder cu programul caruia vrei sa-i testezi timpul.


Titlul: Răspuns: Evaluator
Scris de: Pripoae Teodor Anton din Decembrie 06, 2008, 21:36:12
Uite aici un header care te poate ajuta. L-am folosit cu succes pana acum. E la atasamente, trebuie doar sa ii schimbi extensia in .h. Uite cum se foloseste:
Cod:
#include <iostream>
#include <timer.h>
int main(){
    timer t;
    t.start();
    system("program.exe");
    std:: cout<<"Timp de executie "<<t<<" secunde\n";
}

cu timer declari clasa timer( constructor), cu start() il pornesti, cu stop() il opresti, cu restart() il repornesti, cu cout << afisezi cat a durat de la pornirea lui pana la momentul acela. Nu uita sa incluzi timer.h.

Spor :)



Titlul: Răspuns: Răspuns: Evaluator
Scris de: Cosmin-Mihai Tutunaru din Decembrie 10, 2008, 17:32:50
Cod:
 
#include <stdlib.h>
#include <time.h>

int main ()
{
  time_t start,end;
  double dif;

  time (&start);
  system("program.exe");
  time (&end);
  dif = difftime (end,start);

  printf("%.3f\n", dif); 

  return 0;
}

Ar trebuie sa mearga... iti afiseaza numarul de secunde cu 3 zecimale. Trebuie sa pui asta in acelasi folder cu programul caruia vrei sa-i testezi timpul.

Functioneaza acesta, insa as avea o mica problema....
Timpul returnat de functia difftime este doar numarul de secunde.....toate zecimalele fiind doar 0......Cum pot remedia aceasta problema?
Si as mai dori daca se paote sa opreasca program.exe dupa un anumit timp (in cazul in care nu termina el de executat)


Titlul: Răspuns: Răspuns: Evaluator
Scris de: Pripoae Teodor Anton din Decembrie 10, 2008, 20:53:34
Cod:
 
#include <stdlib.h>
#include <time.h>

int main ()
{
  time_t start,end;
  double dif;

  time (&start);
  system("program.exe");
  time (&end);
  dif = difftime (end,start);

  printf("%.3f\n", dif); 

  return 0;
}

Ar trebuie sa mearga... iti afiseaza numarul de secunde cu 3 zecimale. Trebuie sa pui asta in acelasi folder cu programul caruia vrei sa-i testezi timpul.

Functioneaza acesta, insa as avea o mica problema....
Timpul returnat de functia difftime este doar numarul de secunde.....toate zecimalele fiind doar 0......Cum pot remedia aceasta problema?
Si as mai dori daca se paote sa opreasca program.exe dupa un anumit timp (in cazul in care nu termina el de executat)


Cod:
 
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
int main ()
{
  time_t start,end;
  double dif;
  start = clock();

  system("program.exe");
  printf("%.3f\n", (float)(clock() - start) / (CLOCKS_PER_SEC)); 

  return 0;
}


Daca vrei sa omori programul e oleaca mai complicat... Deschizi programul intr-o fereastra separata( cu system("start program.exe"); )  (Windows-ul nu e multi - tasking) si astepti x secunde pana sa il omori. (iti trebuie un program special pentru a il omori deoarece cu taskkill nu iti iti inchide si procesele deshise de acesta, deci si fisierele deschise).

Daca vrei exact sa iti arat cum, vorbim pe privat.

Spor :)