Guest User

Untitled

a guest
May 5th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.30 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <omp.h>
  3. #include <stdlib.h>
  4. #define NMAX 100
  5. #define Random() (rand()%10000)*0.0001
  6.  
  7. typedef int t2[NMAX][NMAX];
  8.  
  9. void gnp(int n, float p, t2 A);
  10. void druk(int n, t2 A);
  11. int countEdges(int n, t2 A);
  12. int countTriangles(int n, t2 A);
  13.  
  14.  
  15. int main(int argc, char* argv[])
  16. {
  17.         int Lk, Lt, n = 5;
  18.         float p = 0.7;
  19.         t2 A;
  20.         gnp(n, p, A);
  21. #pragma omp parallel
  22.         {
  23. #pragma omp sections
  24.    {
  25. #pragma omp section
  26.          {
  27.                  printf("Krawedzie:Numer watku %d \n", omp_get_thread_num());
  28.                  Lk = countEdges(n, A);
  29.          }
  30. #pragma omp section
  31.          {
  32.                  printf("Trojkaty:Numer watku %d \n", omp_get_thread_num());
  33.                  Lt = countTriangles(n, A);
  34.          }
  35.    }
  36.         }
  37.         druk(n, A);
  38.         printf("Liczba krawedzi = %d\n", Lk);
  39.         printf("Liczba trojkatow = %d\n", Lt);
  40.         //system("pause");
  41.         return 0;
  42. }
  43.  
  44. void gnp(int n, float p, t2 A) {
  45.         int i, j, x;
  46.         // omp_set_num_threads(4);
  47.         // set OMP_NUM_THREADS=4
  48. #pragma omp parallel for private(j)
  49.         for (i = 0; i<n - 1; i++)
  50.         {
  51.                 printf("Numer watku %d, i=%d\n", omp_get_thread_num(), i);
  52.                 A[i][i] = 0;
  53.                 for (j = i + 1; j<n; j++)
  54.                 {
  55.                         x = (Random() <= p); A[i][j] = x; A[j][i] = x;
  56.                 }
  57.         }
  58.         A[n - 1][n - 1] = 0;
  59.         //printf("Liczba watkow %d\n",omp_get_num_threads());
  60.         //printf("Maksymalna liczba watkow %d\n",omp_get_max_threads());
  61. }
  62.  
  63. int countEdges(int n, t2 A) {
  64.         int i, j, k = 0;
  65.         for (i = 0; i<n - 1; i++)
  66.                 for (j = i + 1; j<n; j++)
  67.                         if (A[i][j]) k++;
  68.         return k;
  69. }
  70.  
  71. int countTriangles(int n, t2 A) {
  72.         int i, j, m, t = 0;
  73.         for (i = 0; i<n - 2; i++)
  74.                 for (j = i + 1; j<n - 1; j++)
  75.                         if (A[i][j]) for (m = j + 1; m<n; m++)
  76.                                 if (A[i][m] && A[j][m]) t++;
  77.         return t;
  78. }
  79.  
  80. void druk(int n, t2 A) {
  81.         int i, j;
  82.         for (i = 0; i<n; i++)
  83.         {
  84.                 for (j = 0; j<n; j++) if (A[i][j]) printf("1 "); else printf("0 ");
  85.                 printf("\n");
  86.         }
  87. }
Add Comment
Please, Sign In to add comment