Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C wykonanie dodawania przez kilka sekund

Ostatnio zmodyfikowano 2017-11-02 11:27
Autor Wiadomość
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?

C/C++
#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;
}
 
P-166142
ParseThisCode
» 2017-10-29 06:26:02
O ile wiem to
C/C++
z++;
to postinkrementacja, a dodawanie liczby samej do siebie wygląda tak:
C/C++
z += z;
P-166169
nanoant20
» 2017-10-29 08:53:53
Mozesz dodać bibliotękę time.h lub windows.h

C/C++
#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
 

P-166170
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
P-166171
nanoant20
» 2017-10-29 09:39:47
oczywiście, że masz wynik 0 bo sam ustawiłeś zmienną z na 0
C/C++
long int z = 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
P-166172
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?
C/C++
#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;
}
P-166173
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

P-166174
cybernetykpl
Temat założony przez niniejszego użytkownika
» 2017-10-29 10:08:05
C/C++
#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.
P-166175
« 1 » 2 3
  Strona 1 z 3 Następna strona