#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
/* Zdefiniuj typ strukturalny zawierający 3 pola (int, char, double ). Następnie zaimplementuj funkcje do obsługi zdefiniowanego typu:
losowanie – funkcja, kasowanie – funkcja, sortowanie – funkcja, zliczanie znaków – funkcja.
W funkcji main() programu wywołaj następująco sekwencję funkcji (oznaczenia czas start, czas stop oznaczają początek i koniec pomiaru czasu wykonania wraz z wyświetleniem czasu wykonania) */
struct DATA {
int liczba_int;
char znak;
double liczba_double;
} ;
/*funkcja losowania znaków*/ char Losuj_char( ) {
char znak
= rand ( ) % 255 ; return ( znak) ;
}
/*funkcja losowania liczb*/ int Losuj_int( ) {
int no
= rand ( ) /*% INT_MAX*/ ; return ( no) ;
}
struct DATA** Losuj_dane( int N) {
printf ( "Losuj_dane: %d \n " , N
) ; /*dynamiczna tablice wskaznikow na struktury typu DATA */
struct DATA ** ptr_tab;
/*rezerwowanie miejsca na tablicę wskaźników*/
ptr_tab
= ( struct DATA
** ) malloc ( N
* sizeof ( struct DATA
* ) ) ; /*rezerwowanie pod każdy wskaźnik pamięci na DATA*/
for ( int i = 0 ; i< N; i++ ) {
ptr_tab
[ i
] = ( struct DATA
* ) malloc ( sizeof ( struct DATA
) ) ; ptr_tab[ i] -> liczba_int = Losuj_int( ) ;
ptr_tab[ i] -> znak = Losuj_char( ) ;
ptr_tab[ i] -> liczba_double = 0 ;
}
return ( ptr_tab) ;
}
void Kasuj_dane( struct DATA** ptr_tab, int N) {
printf ( "Kasuj_dane: %d \n " , N
) ;
for ( int i = 0 ; i< N; i++ ) {
}
}
void Sortuj_dane( struct DATA** ptr_tablica, int N) {
printf ( "Sortuj_dane: %d \n " , N
) ; do
{
for ( int i = 1 ; i< N; i++ )
{
if ( ptr_tablica[ i- 1 ] -> liczba_int > ptr_tablica[ i] -> liczba_int)
{
struct DATA * wsk = ptr_tablica[ i] ;
ptr_tablica[ i] = ptr_tablica[ i- 1 ] ;
ptr_tablica[ i- 1 ] = wsk;
}
}
N--;
} while ( N> 1 ) ;
}
void Zliczanie_znakow( struct DATA** ptr_tablica, int N, char znak) {
printf ( "Zliczanie_znakow: %d \n " , N
) ; int licznik_znakow = 0 ;
for ( int i = 0 ; i< N; i++ )
{
//do {
if ( ptr_tablica[ i] -> znak == znak) licznik_znakow++;
//} while (ptr_tablica[i]->znak == znak);
//printf("Znak: %c \n", znak);
//
}
printf ( "liczba wystapien znaku: %d\n " , licznik_znakow
) ; }
void LOSOWANIE( int N, char szukaj_znak) {
printf ( "LOSOWANIE: %d \n " , N
) ; clock_t start, stop;
struct DATA** ptr_tablica;
start
= clock ( ) ; /*start programu*/
ptr_tablica = Losuj_dane( N) ;
Sortuj_dane( ptr_tablica, N) ;
Zliczanie_znakow( ptr_tablica, N, szukaj_znak) ;
time = ( stop
- start
) / CLOCKS_PER_SEC
;
Kasuj_dane( ptr_tablica, N) ;
//stop = clock();
//time = (stop - start) / CLOCKS_PER_SEC;
if ( time>= 0 )
printf ( "Losowanie: %d \n " , N
) ; //printf("Czas wykonania: %0.50f", time);
//getchar();
}
int main( )
{
LOSOWANIE( 1000 , 'A' ) ;
LOSOWANIE( 10000 , 'B' ) ;
LOSOWANIE( 100000 , 'C' ) ;
//system("pause");
//getchar();
//getchar();
return 0 ;
}
I2luY2x1ZGUgPGxpbWl0cy5oPiAKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8dGltZS5oPgoKIAogCi8qIFpkZWZpbml1aiB0eXAgc3RydWt0dXJhbG55IHphd2llcmFqxIVjeSAzIHBvbGEgKGludCwgY2hhciwgZG91YmxlICkuIE5hc3TEmXBuaWUgemFpbXBsZW1lbnR1aiBmdW5rY2plIGRvIG9ic8WCdWdpIHpkZWZpbmlvd2FuZWdvIHR5cHU6Cmxvc293YW5pZSDigJMgZnVua2NqYSwga2Fzb3dhbmllIOKAkyBmdW5rY2phLCBzb3J0b3dhbmllIOKAkyBmdW5rY2phLCB6bGljemFuaWUgem5ha8OzdyDigJMgZnVua2NqYS4KVyBmdW5rY2ppIG1haW4oKSBwcm9ncmFtdSB3eXdvxYJhaiBuYXN0xJlwdWrEhWNvIHNla3dlbmNqxJkgZnVua2NqaSAob3puYWN6ZW5pYSBjemFzIHN0YXJ0LCBjemFzIHN0b3Agb3puYWN6YWrEhSBwb2N6xIV0ZWsgaSBrb25pZWMgcG9taWFydSBjemFzdSB3eWtvbmFuaWEgd3JheiB6IHd5xZt3aWV0bGVuaWVtIGN6YXN1IHd5a29uYW5pYSkgKi8KIApzdHJ1Y3QgREFUQSB7CiAgICAgICAgaW50IGxpY3piYV9pbnQ7CiAgICAgICAgY2hhciB6bmFrOwogICAgICAgIGRvdWJsZSBsaWN6YmFfZG91YmxlOwp9OwogCi8qZnVua2NqYSBsb3Nvd2FuaWEgem5ha8OzdyovICBjaGFyIExvc3VqX2NoYXIoKSB7CiAgICAgICAgY2hhciB6bmFrID0gcmFuZCgpICUgMjU1OwogICAgICAgIHJldHVybih6bmFrKTsKfQogCi8qZnVua2NqYSBsb3Nvd2FuaWEgbGljemIqLyBpbnQgTG9zdWpfaW50KCkgewogICAgICAgIGludCBubyA9IHJhbmQoKSAvKiUgSU5UX01BWCovOwogICAgICAgIHJldHVybiAobm8pOwp9CiAKIApzdHJ1Y3QgREFUQSoqIExvc3VqX2RhbmUoaW50IE4pIHsKCXByaW50ZigiTG9zdWpfZGFuZTogJWQgXG4iLCBOKTsKICAgICAgICAvKmR5bmFtaWN6bmEgdGFibGljZSB3c2them5pa293IG5hIHN0cnVrdHVyeSB0eXB1IERBVEEgKi8KICAgICAgICBzdHJ1Y3QgREFUQSAqKnB0cl90YWI7CiAKICAgICAgICAvKnJlemVyd293YW5pZSBtaWVqc2NhIG5hIHRhYmxpY8SZIHdza2HFum5pa8OzdyovCiAgICAgICAgcHRyX3RhYiA9IChzdHJ1Y3QgREFUQSoqKW1hbGxvYyhOKnNpemVvZihzdHJ1Y3QgREFUQSopKTsKIGlmKCFwdHJfdGFiKSBleGl0KDEpOwogICAgICAgIC8qcmV6ZXJ3b3dhbmllIHBvZCBrYcW8ZHkgd3NrYcW6bmlrIHBhbWnEmWNpIG5hIERBVEEqLwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpPE47IGkrKykgewogICAgICAgICAgICAgICAgcHRyX3RhYltpXSA9IChzdHJ1Y3QgREFUQSopIG1hbGxvYyhzaXplb2Yoc3RydWN0IERBVEEpKTsKIGlmKCFwdHJfdGFiW2ldKSBleGl0KDIpOwogICAgICAgICAgICAgICAgcHRyX3RhYltpXS0+bGljemJhX2ludCA9IExvc3VqX2ludCgpOwogICAgICAgICAgICAgICAgcHRyX3RhYltpXS0+em5hayA9IExvc3VqX2NoYXIoKTsKICAgICAgICAgICAgICAgIHB0cl90YWJbaV0tPmxpY3piYV9kb3VibGUgPSAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4ocHRyX3RhYik7CiAKfQogCnZvaWQgS2FzdWpfZGFuZShzdHJ1Y3QgREFUQSoqIHB0cl90YWIsIGludCBOKSB7CiAgICAgICAgcHJpbnRmKCJLYXN1al9kYW5lOiAlZCBcbiIsIE4pOwogICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGk8TjsgaSsrKXsKICAgICAgICAgICAgICAgIGZyZWUocHRyX3RhYltpXSk7CiAgICAgICAgfQogICAgICAgIGZyZWUocHRyX3RhYik7Cn0KIAogCnZvaWQgU29ydHVqX2RhbmUoc3RydWN0IERBVEEqKiBwdHJfdGFibGljYSwgaW50IE4pIHsKICAgICAgICBwcmludGYoIlNvcnR1al9kYW5lOiAlZCBcbiIsIE4pOwogICAgICAgIGRvCiAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGk8TjsgaSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocHRyX3RhYmxpY2FbaS0xXS0+bGljemJhX2ludCA+IHB0cl90YWJsaWNhW2ldLT5saWN6YmFfaW50KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IERBVEEgKndzayA9IHB0cl90YWJsaWNhW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cl90YWJsaWNhW2ldID0gcHRyX3RhYmxpY2FbaS0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJfdGFibGljYVtpLTFdID0gd3NrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBOLS07CiAgICAgICAgfSB3aGlsZSAoTj4xKTsKfQogCnZvaWQgWmxpY3phbmllX3puYWtvdyhzdHJ1Y3QgREFUQSoqIHB0cl90YWJsaWNhLCBpbnQgTiwgY2hhciB6bmFrKXsKIAogICAgICAgIHByaW50ZigiWmxpY3phbmllX3puYWtvdzogJWQgXG4iLCBOKTsKICAgICAgICBpbnQgbGljem5pa196bmFrb3cgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpPE47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgICAgICAvL2RvICAgICAgICAgICAgICAgICB7CiAKICAgICAgICAgICAgICAgIGlmKHB0cl90YWJsaWNhW2ldLT56bmFrID09IHpuYWspIGxpY3puaWtfem5ha293Kys7CiAKICAgICAgICAgICAgICAgIC8vfSB3aGlsZSAocHRyX3RhYmxpY2FbaV0tPnpuYWsgPT0gem5hayk7CiAKICAgICAgICAgICAgICAgIC8vcHJpbnRmKCJabmFrOiAlYyBcbiIsIHpuYWspOwogICAgICAgICAgICAgICAgLy8KICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJsaWN6YmEgd3lzdGFwaWVuIHpuYWt1OiAlZFxuIiwgbGljem5pa196bmFrb3cpOwp9CiAKdm9pZCBMT1NPV0FOSUUoaW50IE4sIGNoYXIgc3p1a2FqX3puYWspIHsKIAogICAgICAgIHByaW50ZigiTE9TT1dBTklFOiAlZCBcbiIsIE4pOwogICAgICAgIGNsb2NrX3Qgc3RhcnQsIHN0b3A7CiAgICAgICAgZG91YmxlIHRpbWU7CiAKICAgICAgICBzdHJ1Y3QgREFUQSoqIHB0cl90YWJsaWNhOwogCiAgICAgICAgc3RhcnQgPSBjbG9jaygpOyAvKnN0YXJ0IHByb2dyYW11Ki8KIAogICAgICAgIHB0cl90YWJsaWNhID0gTG9zdWpfZGFuZShOKTsKICAgICAgICBTb3J0dWpfZGFuZShwdHJfdGFibGljYSwgTik7CiAgICAgICAgWmxpY3phbmllX3puYWtvdyhwdHJfdGFibGljYSwgTiwgc3p1a2FqX3puYWspOwogCiAgICAgICAgc3RvcCA9IGNsb2NrKCk7CiAgICAgICAgdGltZSA9IChzdG9wIC0gc3RhcnQpIC8gQ0xPQ0tTX1BFUl9TRUM7CiAKICAgICAgICBLYXN1al9kYW5lKHB0cl90YWJsaWNhLCBOKTsKIAogICAgICAgIC8vc3RvcCA9IGNsb2NrKCk7CiAgICAgICAgLy90aW1lID0gKHN0b3AgLSBzdGFydCkgLyBDTE9DS1NfUEVSX1NFQzsKIAogICAgICAgIGlmKHRpbWU+PTApCiAgICAgICAgcHJpbnRmKCJMb3Nvd2FuaWU6ICVkIFxuIiwgTik7CiAgICAgICAgLy9wcmludGYoIkN6YXMgd3lrb25hbmlhOiAlMC41MGYiLCB0aW1lKTsKICAgICAgICAvL2dldGNoYXIoKTsKfQogCmludCBtYWluKCkKewogICAgICAgIExPU09XQU5JRSgxMDAwLCAnQScpOwogICAgICAgIExPU09XQU5JRSgxMDAwMCwgJ0InKTsKICAgICAgICBMT1NPV0FOSUUoMTAwMDAwLCAnQycpOwogCiAgICAgICAgLy9zeXN0ZW0oInBhdXNlIik7CiAgICAgICAgLy9nZXRjaGFyKCk7CiAgICAgICAgLy9nZXRjaGFyKCk7CiAKICAgICAgICByZXR1cm4gMDsKfQ==