Showing posts with label Slovak. Show all posts
Showing posts with label Slovak. Show all posts

C Program pre implementáciám N Sync " zreťazenie " procesov ( nie cez n - 1 semafor )

Ako napísať C program na implementáciám N Sync " zreťazenie " procesov ( nie cez n - 1 semafore ) v C programovací jazyk ?



  1. //Bonusova uloha: implementacia synchronizacie pre N "zretazenych" procesov (nie cez n-1 semaforov)
  2. #define N 10 //pozadovane cele cislo - napr. 10
  3.  
  4. //ukazkova struktura semaforu + samozrejme funkcie wait() a signal()
  5. typedef struct semaphore {
  6.         int val;
  7.         queue Q;
  8. } semaphore;
  9.  
  10. //Globalne premenne
  11. int n = N, pocitadlo = 0;
  12. semaphore mutex, sem1;
  13.  
  14. //funkcia initialize, ktora nastavi semafory na zaciatku - moze to byt napriklad aj main
  15. void initialize(){
  16.         mutex.init(1);
  17.         sem1.init(0);
  18. }
  19.  
  20. //postup instrukcii, ktore vykonava proces
  21. void doProcess(){
  22.         mutex.wait();
  23.         pocitadlo = pocitadlo + 1;  //inkrementacia pocitadla "chranena" vzajomnym vylucovanim
  24.         if(count == n) sem1.signal(); //posledny proces da po zvyseni pocitadla signal pre zaciatok "radu"
  25.         mutex.signal();
  26.        
  27.         //cakanie na svoj turn
  28.         sem1.wait();
  29.         doStuff();  //vykonanie tela procesu
  30.         sem1.signal();  //po skonceni dame sigal nasledujucemu procesu
  31. }

C program, ktorý načíta do poľa postupnosť čísel a porovnáva každého prvku každý a označovať vzťah medzi nimi ( < , > , = )

Ako napísať program v jazyku C, ktorý načíta do poľa postupnosť čísel a porovnáva každého prvku každý a označovať vzťah medzi nimi ( < , > , = ) v C programovací jazyk ?


Solution:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /* Vytvorte program, ktorý do poľa načíta postupnosť čísel a porovná každý prvok z
  5. každým a označí vzťah medzi nimi (<, >, =).  */
  6.  
  7. int main()
  8. {
  9.     int x, i, y;
  10.     int pole[100];
  11.  
  12.  
  13.  
  14.     printf("\n    Zadejte velikost pole: ");
  15.     scanf("%i", &x);
  16.  
  17.     printf("    Zadejte prvky pole: \n");
  18.  
  19.     for (i=0; i<x; i++) {
  20.  
  21.         scanf ("\n    %i", &pole[i]);
  22.  
  23.  
  24.    }
  25.  
  26.     printf("\n");
  27.     printf("    Toto je vase pole: ");
  28.  
  29.     for (i=0; i<x; i++) {
  30.         printf ("%i,", pole[i]);
  31.    }
  32.  
  33.    printf("\n \n");
  34.  
  35.     for (i=0; i<x; i++) {
  36.  
  37.  
  38.  
  39.         if (pole[i]>pole[i+1])
  40.             printf("    %i > %i \n", pole[i], pole[i+1]);
  41.  
  42.         if (pole[i]<pole[i+1])
  43.             printf("    %i < %i \n", pole[i], pole[i+1]);
  44.     }
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.     printf("\n \n \n"); // pro lepsi prehlednost
  52.  
  53. }