Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*1. Štatistika
- Napíšte viacvláknový program, ktorý bude v jednotlivých vláknach počítať rôzne štatistiky. V základnej verzii nech má program tri pracovné vlákna, ktoré počítajú priemer, maximum a minimum hodnôt zadaných na vstupe programu. Nech sú tieto výstupné štatistiky globálne prístupné, aby ich mohlo hlavné vlákno po ukončení pracovných vlákien vypísať.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <pthread.h>
- int pole[] = {90, 81, 78, 95, 72, 85};
- int pocCis = sizeof(pole)/sizeof(int);
- void* maximum(void* p) {
- int* arr = (int*) p;
- int i;
- int maximum = arr[0];
- for(i = 0; i < 5; i++) {
- if(arr[i] > maximum) {
- maximum = arr[i];
- }
- }
- //printf("Maximum je: %i\n", maximum);
- return (void*)maximum;
- }
- void* minimum(void* p) {
- int* arr = (int*) p;
- int i;
- int minimum = arr[0];
- for(i = 0; i < 5; i++) {
- if(arr[i] < minimum) {
- minimum = arr[i];
- }
- }
- //printf("Minimum je: %i\n", minimum);
- return (void*)minimum;
- }
- void* average(void* p) {
- int sum = 0;
- int* arr = (int*) p;
- int i;
- printf("dlzka pola: %i\n", pocCis);
- for (i = 0; i < pocCis; i++) {
- sum = sum + arr[i];
- }
- int avg;
- avg = sum/pocCis;
- //printf("Sum: %i, Priemer je: %i\n", sum, avg);
- return (void*)avg;
- }
- int main () {
- int i;
- int tmp1;
- tmp1 = sizeof(pole)/sizeof(int);
- pthread_t max;
- pthread_t min;
- pthread_t avg;
- void* maxim;
- void* minim;
- void* averg;
- for (i = 0; i < tmp1; i++) {
- int tmp;
- tmp = pole[i];
- printf("Pole %i hodnota: %i\n", i, tmp);
- }
- pthread_create(&max, NULL, maximum, (void*)pole);
- pthread_create(&min, NULL, minimum, (void*)pole);
- pthread_create(&avg, NULL, average, (void*)pole);
- pthread_join(max, &maxim);
- pthread_join(min, &minim);
- pthread_join(avg, &averg);
- printf("Averg: %i\n", (int)averg);
- printf("Maximum: %i\n", (int)maxim);
- printf("Minimum: %i\n", (int)minim);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement