Showing posts with label Romanian. Show all posts
Showing posts with label Romanian. Show all posts

C Programul de Beta Parcare

Cum se scrie un program C pentru a Beta Parcare în limbajul de programare C ?


Solution:


  1. /* parcare beta */
  2.  
  3. #include <pthread.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include </usr/include/semaphore.h>
  7.  
  8. #define BUFF_SIZE 5
  9. #define NR_MASINI 5
  10.  
  11. typedef struct{
  12.         int buf[BUFF_SIZE];
  13.         int in;
  14.         int out;
  15.         sem_t full;
  16.         sem_t empty;
  17.         pthread_mutex_t mutex;
  18. }parcare;
  19.  
  20. parcare p;
  21.  
  22. void* MasinaIn(void*arg)
  23. {
  24.  
  25. int index = (int)arg;
  26. int item,i;
  27.  
  28. for (i=0; i < 20; i++)
  29. {
  30. item =i;
  31.  
  32. sem_wait(&p.empty);
  33. pthread_mutex_lock(&p.mutex);
  34. p.buf[p.in] = item;
  35. p.in = (p.in+1)%BUFF_SIZE;
  36. printf("\nEste parcata masina pe pozitia %d",index);
  37. fflush(stdout);
  38.  
  39.  pthread_mutex_unlock(&p.mutex);
  40.         /* Increment the number of full slots */
  41.         sem_post(&p.full);
  42.  
  43. }
  44. return NULL;
  45. }
  46.  
  47.  
  48.  
  49. void* MasinaOut(void* arg)
  50. {
  51.  
  52. int i, item, index;
  53.  
  54.     index = (int)arg;
  55.     for (i=20; i > 0; i--) {
  56.         int r = rand() % 10;
  57.         sem_wait(&p.full);
  58.         pthread_mutex_lock(&p.mutex);
  59.         item=i;
  60.         item=p.buf[p.out];
  61.         p.out = (p.out+1)%BUFF_SIZE;
  62.         sleep(r);
  63.         printf("\nA iesit masina de pe pozitia %d si a stat %d secunde in parcare\n", index,r);
  64.         fflush(stdout);
  65.         /* Release the buffer */
  66.         pthread_mutex_unlock(&p.mutex);
  67.         /* Increment the number of full slots */
  68.         sem_post(&p.empty);
  69.  
  70.         /* Interleave  producer and consumer execution */
  71.  
  72.        
  73.     }
  74. return NULL;
  75. }
  76.  
  77.  
  78.  
  79. int main(void)
  80. {
  81.         pthread_t idMin, idMout;
  82.     int index;
  83.  
  84.     sem_init(&p.full, 0, 0);
  85.     sem_init(&p.empty, 0, BUFF_SIZE);
  86.     pthread_mutex_init(&p.mutex, NULL);
  87.     for (index = 0; index < 15; index++)
  88.     {
  89.         /* Create a new producer */
  90.         pthread_create(&idMin, NULL, MasinaIn, (void*)index);
  91.     }
  92.     /*create a new Consumer*/
  93.     for(index=0; index<5; index++)
  94.     {
  95.         pthread_create(&idMout, NULL, MasinaOut, (void*)index);
  96.     }
  97.  
  98.  
  99.  
  100.     pthread_exit(NULL);
  101. }

Tablou de char

Tablou de char

  1. #include <stdio.h>
  2. //#include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     char t[]={'a', 'b', 'c'};
  7.     char i;
  8.     printf("i=");
  9.     scanf("%c", &i);
  10.     printf("%d", i);
  11.     return 0;
  12. }

C Programul de spirală Cautati

Cum se scrie un program C pentru a parcurge spirală în limbajul de programare C ?


Solution:

  1. #include <stdio.h>
  2.  
  3. void spirala(int a[][100], int m, int n, int v[])
  4. {
  5.         int i = 0, j = 0, c = 0, k = 0, i1, j1;
  6.         while(< m * n)
  7.         {
  8.                 for(i1 = i; i1 < n - i; i1++)
  9.                 {
  10.                         v[k] = a[i1][j];
  11.                         k++;
  12.                 }
  13.                 for(j1 = j + 1; j1 < m - j; j1++)
  14.                 {
  15.                         v[k] = a[- i - 1][j1];
  16.                         k++;
  17.                 }
  18.                 for(i1 = n - i - 2; i1 >= i; i1--)
  19.                 {
  20.                         v[k] = a[i1][- j - 1];
  21.                         k++;
  22.                 }
  23.                 for(j1 = m - j - 2; j1 >= j+1; j1--)
  24.                 {
  25.                         v[k] = a[i][j1];
  26.                         k++;
  27.                 }
  28.                 i++;
  29.                 j++;
  30.         }
  31. }
  32.  
  33. void afisare(int v[], int dim)
  34. {
  35.         int i;
  36.         for(i=0;i<dim;i++)
  37.         {
  38.                 printf("%d ", v[i]);
  39.         }
  40.         printf("\n");
  41. }
  42.  
  43. int main()
  44. {
  45.         int n, m, a[100][100], v[10000], i, j, dim;
  46.         scanf("%d %d", &n, &m);
  47.         for(i=0;i<n;i++)
  48.         {
  49.                 for(j=0;j<m;j++)
  50.                 {
  51.                         scanf("%d", &a[i][j]);
  52.                 }
  53.         }
  54.         spirala(a, m, n, v);
  55.         dim = n*m;
  56.         afisare(v, dim);
  57.         return 0;
  58. }