cybernetykpl Temat założony przez niniejszego użytkownika  | 
C wykonanie dodawania przez kilka sekund  » 2017-10-28 18:51:47 Witam, mam następujacy kod, w którym z jest dodawane do siebie (z++). Mam to dodawanie do siebie liczb wykonać przez sekundę i wyświetlić wynik dodawania. W jaki sposób sprawidź aby c++ wykonywało sie tylko określoną ilość sekund? #include <stdio.h> #include <signal.h> #include <unistd.h> #include <sys/types.h>
  int main( void ) {     long int z = 0;     alarm( 1 );     while( 1 )     {         printf( "Liczba:" );         printf( "%d\n", z );         z++;         printf( "pid %d ppid %d\n ", getpid(), getppid() );              }     return 0; }
     | 
 | 
ParseThisCode  | 
» 2017-10-29 06:26:02 O ile wiem to  to postinkrementacja, a dodawanie liczby samej do siebie wygląda tak:  | 
 | 
nanoant20  | 
» 2017-10-29 08:53:53 Mozesz dodać bibliotękę time.h lub windows.h #include <time.h> #include <windows.h>
  i zdefiniować sobie zmienne  clock_t start,stop; double czas = (double)(stop-start) / CLOCKS_PER_SEC; lub skorzystać ze struktury SYSTEMTIME zdefiniowanej w bibliotece windows.h   | 
 | 
cybernetykpl Temat założony przez niniejszego użytkownika  | 
» 2017-10-29 09:36:19 Niestety jak dam   z += z; to mam wynik 0. Z to ma być zmienna  całkowita typu long. Tiutaj chodzi o zwielokrotnienie liczby z. Czy to   z += z; to zwielokrotnienie? Druga sprawa to kompilator pokazuje mi błąd (pod linux): pp.c:11:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode      for( int i = 0; i < 10; i++ )      ^ pp.c:11:5: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
   | 
 | 
nanoant20  | 
» 2017-10-29 09:39:47 oczywiście, że masz wynik 0 bo sam ustawiłeś zmienną z na 0 Wpisałem twój kod pod Code::Blocks na Xubuntu 16.04 i nie ma żadnych błędów. Jezeli je masz to wejdź w ustawienia swojego kompilatora Settings/Compiler i w zakładce Comiler Flags (zaznacz lub odznacz) ustaw flagę/i. Jeżeli używasz standardu C++11 to zaznacz flagę Have g++ follow the C++11 ISO C++ language standard -std=c++11  | 
 | 
cybernetykpl Temat założony przez niniejszego użytkownika  | 
» 2017-10-29 09:51:41 Mam teraz wynik. 0 + 0 = 0 czas 0.000001 s. 1 + 1 = 2 czas 0.000001 s. 2 + 2 = 4 czas 0.000000 s. 3 + 3 = 6 czas 0.000000 s. 4 + 4 = 8 czas 0.000001 s. 5 + 5 = 10 czas 0.000000 s. 6 + 6 = 12 czas 0.000000 s. 7 + 7 = 14 czas 0.000000 s. 8 + 8 = 16 czas 0.000000 s. 9 + 9 = 18 czas 0.000001 s. a chodzi o to aby to wykonywało się w czsie 1 sekundy. Czy jest dobrze? #include <stdio.h> #include <stdlib.h> #include <time.h>
 
  int main( void ) {     int z;     clock_t start, stop;     double czas;          for( int i = 0; i < 10; i++ )     {         printf( "%d + %d ", z = i, z = i );         start = clock();         z += z;         stop = clock();         czas =( double )( stop - start ) / CLOCKS_PER_SEC;         printf( "= %d czas %lf s.\n", z, czas );              }     return 0; }
   | 
 | 
nanoant20  | 
» 2017-10-29 09:59:28 mea culpa mea maxima culpa To jest czas w jakim wykonuję się jedno dodawanie. Trzeba ustawić na sztywno zmienna stop;
  tutaj masz linka do http://cpp0x.pl/kursy/Kurs-C++/Biblioteka-time-h/321
 
   | 
 | 
cybernetykpl Temat założony przez niniejszego użytkownika  | 
» 2017-10-29 10:08:05 #include <stdio.h> #include <stdlib.h> #include <time.h>
 
  int main( void ) {     int z;     clock_t start, stop;     double czas;          for( int i = 0; i < 10; i++ )     {         printf( "%d + %d ", z = i, z = i );         start = clock();         z += z;         stop = clock();         czas =( double )( stop - start ) / CLOCKS_PER_SEC;         printf( "= %d czas %lf s.\n", z, czas );              }     return 0; } proszę w takim razie popraw mi aby dodawało tak o 1. czyli: 0+1=1, 1+1=2, 2+1=3 otd.  | 
 | 
|  « 1 »  2 3 |