Program "Stopky" v jazyku C.

C,C++,C#

Moderátori: psichac, Moderátori

martinator11
Nový člen
Nový člen
Príspevky: 93
Dátum registrácie: 22 Jan 2013, 08:02
Bydlisko: NDCA
Vek: 33

Program "Stopky" v jazyku C.

Príspevok od používateľa martinator11 » 09 Nov 2013, 10:07

Nazdar chlapi chcem spravit jednoduche stopky v Cecku, ktoré by pocitali cas trvania behu nejakeho programu. Uz sa mi aj podarilo nieco nakodit ale nie je to este celkom ono. Zatial mám spravené toto:
(ten sucet a+b je len ako priklad nejakeho programu, ktoreho cas chcem merat).

#include <stdio.h>
#include <time.h>

int main (void)
{
int a=0,b=0;
double diff = 0.0;
time_t start;
time_t stop;

time(&start);
printf("Zadaj a:\n");
scanf("%d",&a);
printf("Zadaj b:\n");
scanf("%d",&b);
printf("Sucet je:%d\n",a+b);
time(&stop);
diff = difftime(stop, start);
printf("Trvalo ti to %g sekund.\n", diff);
system("PAUSE");
}

Toto v pohode funguje ale pocita to cas v sekundach. Ja by som ale potreboval aby my ten cas zobrazilo v nejakom normalnom formáte napríklad "hodina:minuta:sekunda". Neviete niekto poradit. Dakujem.
0

Používateľov profilový obrázok
boban
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 03 Jún 2010, 00:00
Bydlisko: po

Re: Program "Stopky" v jazyku C.

Príspevok od používateľa boban » 09 Nov 2013, 11:17

skus takto

diff zmen z doublu na int.

s = diff % 60;
m = (diff / 60) % 60;
h = diff / 3600;
printf("Trvalo ti to %02d:%02d:%02d.\n", h, m, s );
0

martinator11
Nový člen
Nový člen
Príspevky: 93
Dátum registrácie: 22 Jan 2013, 08:02
Bydlisko: NDCA
Vek: 33

Re: Program "Stopky" v jazyku C.

Príspevok od používateľa martinator11 » 09 Nov 2013, 11:42

Super diki tak nejak by to mohlo byt. A ja som nad tým štyri hodiny špekuloval a pritom tak jednoduche na tri riadky.
0

martinator11
Nový člen
Nový člen
Príspevky: 93
Dátum registrácie: 22 Jan 2013, 08:02
Bydlisko: NDCA
Vek: 33

Re: Program "Stopky" v jazyku C.

Príspevok od používateľa martinator11 » 14 Nov 2013, 09:21

Ešte by som potreboval jednu maličkosť. Potrebujem spraviť funkciu, ktorá bude vedieť počítať počet stlačení šípiek na klávesnici.
Diki.
0

martinator11
Nový člen
Nový člen
Príspevky: 93
Dátum registrácie: 22 Jan 2013, 08:02
Bydlisko: NDCA
Vek: 33

Re: Program "Stopky" v jazyku C.

Príspevok od používateľa martinator11 » 14 Nov 2013, 11:56

Neviete niekto ako na to??
Skusal som takto:

int pocitadlo;
clear_keybuf();
while(!keypressed());

if(key[KEY_UP]||key[KEY_DOWN]||key[KEY_LEFT]||key[KEY_RIGHT])
{
pocitadlo++;
}

Ale jaksi to nerobi to co potrebujem.
0

Používateľov profilový obrázok
boban
Stály člen
Stály člen
Príspevky: 137
Dátum registrácie: 03 Jún 2010, 00:00
Bydlisko: po

Re: Program "Stopky" v jazyku C.

Príspevok od používateľa boban » 14 Nov 2013, 21:33

skus toto, funkcia getch potiahne jeden znak necaka na enter, problem je v tom ze sipky sa mi vracali ako kod 3 znakov 27 91 66-68, 66 sipka hore 67 sipka dole atd... preto sa tam v kaskade nacitava ten znak. snad to bude fungovat, skusal som to na linuxe, zadaval som z konzoly... ked nie tak si vo while skus vypisovat jeden nacitany znak, ake hodnoty ti to bude vracat a podla toho to uprav.

Kód: Vybrať všetko

#include <termios.h>
#include <stdio.h>

static struct termios old, new;

/* Initialize new terminal i/o settings */
void initTermios(int echo) 
{
  tcgetattr(0, &old); /* grab old terminal i/o settings */
  new = old; /* make new settings same as old settings */
  new.c_lflag &= ~ICANON; /* disable buffered i/o */
  new.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
  tcsetattr(0, TCSANOW, &new); /* use these new terminal i/o settings now */
}

/* Restore old terminal i/o settings */
void resetTermios(void) 
{
  tcsetattr(0, TCSANOW, &old);
}

/* Read 1 character - echo defines echo mode */
char getch_(int echo) 
{
  char ch;
  initTermios(echo);
  ch = getchar();
  resetTermios();
  return ch;
}

/* Read 1 character without echo */
char getch(void) 
{
  return getch_(0);
}

/* Read 1 character with echo */
char getche(void) 
{
  return getch_(1);
}

/* Let's test it out */
int main(void) {
  unsigned char c;
  int cnt = 0;

  while( 1 )
  {
   if( getch() == 27 )
     if( getch() == 91 )
     {
	c = getch();
	if( c >= 65 && c <= 68 )
        {
	  cnt++;
	  continue;
        }
     }

    break;
  }

  printf( "%d\n", cnt );

  return 0;
} 
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok