Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <omp.h>
- #include <stdlib.h>
- #define NMAX 100
- #define Random() (rand()%10000)*0.0001
- typedef int t2[NMAX][NMAX];
- void gnp(int n, float p, t2 A);
- void druk(int n, t2 A);
- int countEdges(int n, t2 A);
- int countTriangles(int n, t2 A);
- int main(int argc, char* argv[])
- {
- int Lk, Lt, n = 5;
- float p = 0.7;
- t2 A;
- gnp(n, p, A);
- #pragma omp parallel
- {
- #pragma omp sections
- {
- #pragma omp section
- {
- printf("Krawedzie:Numer watku %d \n", omp_get_thread_num());
- Lk = countEdges(n, A);
- }
- #pragma omp section
- {
- printf("Trojkaty:Numer watku %d \n", omp_get_thread_num());
- Lt = countTriangles(n, A);
- }
- }
- }
- druk(n, A);
- printf("Liczba krawedzi = %d\n", Lk);
- printf("Liczba trojkatow = %d\n", Lt);
- //system("pause");
- return 0;
- }
- void gnp(int n, float p, t2 A) {
- int i, j, x;
- // omp_set_num_threads(4);
- // set OMP_NUM_THREADS=4
- #pragma omp parallel for private(j)
- for (i = 0; i<n - 1; i++)
- {
- printf("Numer watku %d, i=%d\n", omp_get_thread_num(), i);
- A[i][i] = 0;
- for (j = i + 1; j<n; j++)
- {
- x = (Random() <= p); A[i][j] = x; A[j][i] = x;
- }
- }
- A[n - 1][n - 1] = 0;
- //printf("Liczba watkow %d\n",omp_get_num_threads());
- //printf("Maksymalna liczba watkow %d\n",omp_get_max_threads());
- }
- int countEdges(int n, t2 A) {
- int i, j, k = 0;
- for (i = 0; i<n - 1; i++)
- for (j = i + 1; j<n; j++)
- if (A[i][j]) k++;
- return k;
- }
- int countTriangles(int n, t2 A) {
- int i, j, m, t = 0;
- for (i = 0; i<n - 2; i++)
- for (j = i + 1; j<n - 1; j++)
- if (A[i][j]) for (m = j + 1; m<n; m++)
- if (A[i][m] && A[j][m]) t++;
- return t;
- }
- void druk(int n, t2 A) {
- int i, j;
- for (i = 0; i<n; i++)
- {
- for (j = 0; j<n; j++) if (A[i][j]) printf("1 "); else printf("0 ");
- printf("\n");
- }
- }
Add Comment
Please, Sign In to add comment