KvArt

Untitled

May 19th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.06 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. void main() {
  5.     while (1) {
  6.         int n, m, **a, i, j, high, low, unos, postoji = 0;
  7.  
  8.         srand(time(NULL));
  9.  
  10.         printf("Unesite broj vrsta, za kraj unosa unesite broj manji od 1: \n");
  11.         scanf("%d", &m);
  12.         if (m < 1) break;
  13.  
  14.         while (1) {
  15.             printf("Unesite broj kolona: \n");
  16.             scanf("%d", &n);
  17.             if (n < 1) printf("Pogresan unos.\n");
  18.             else break;
  19.         }
  20.  
  21.         a = malloc(m*sizeof(int*));
  22.         if (a == NULL) exit(0);
  23.  
  24.         printf("Za samostalni unos matrice unesite 0, za popunjavanje matrice pseudoslucajnim brojevima unesite bilo koji ceo broj razlicit od 0\n");
  25.         scanf("%d", &unos);
  26.         switch (unos) {
  27.             /*Unos matrice od strane korisnika*/
  28.         case 0: {
  29.                     printf("Unesite elemente matrice\n");
  30.                     for (i = 0; i < m; i++) {
  31.                         *(a + i) = malloc(n*sizeof(int));
  32.                         if (*(a + i) == NULL) exit(0);
  33.                         for (j = 0; j < n; j++)
  34.                             scanf("%d", &a[i][j]);
  35.                     }
  36.                     break;
  37.         }
  38.         default: {
  39.                      /*Unos matrice pseudoslucajnim brojevima*/
  40.  
  41.                      /*Unos opsega elemenata matrice*/
  42.                      while (1) {
  43.                          printf("Unesite opseg elemenata kojim zelite da matrica bude popunjena, prvo minimum pa maksimum\n");
  44.                          scanf("%d%d", &low, &high);
  45.                          if (low > high) printf("Neispravan unos, minimum mora biti manji od maksimuma\n");
  46.                          else break;
  47.                      }
  48.  
  49.                      for (i = 0; i < m; i++) {
  50.                          *(a + i) = malloc(n*sizeof(int));
  51.                          if (*(a + i) == NULL) exit(0);
  52.                          for (j = 0; j < n; j++)
  53.                              a[i][j] = rand() / ((double)RAND_MAX)*(high - low) + low;
  54.                      }
  55.                      /*Ispis matrice pseudoslucajnih brojeva*/
  56.                      printf("Matrica slucajnih brojeva:\n\n");
  57.                      for (i = 0; i < m; i++)
  58.                      for (j = 0; j < n; j++) {
  59.                          printf("%d ", a[i][j]);
  60.                          if (j == (n - 1)) printf("\n");
  61.                      }
  62.         }/*Kraj defaulta*/
  63.         }/*Kraj switch-a*/
  64.  
  65.         printf("Broj/evi najveci u svojoj vrsti i koloni je/su:\n");
  66.  
  67.         /*Trazenje lokacije zeljenog broja*/
  68.         for (i = 0; i < m; i++) {
  69.  
  70.             int n_naj = 0, najveci, *naj, *naj_novi, check = 1, l, k;
  71.  
  72.             /*Provera vrsta*/
  73.             najveci = a[i][0];
  74.             naj = malloc(sizeof(int));
  75.  
  76.             if (naj == NULL) exit(0);
  77.             else naj[n_naj++] = 0;
  78.  
  79.             for (j = 1; j < n; j++) {
  80.                 if (a[i][j]>najveci) {  /*1. if*/
  81.                     najveci = a[i][j];
  82.                     n_naj = 0;
  83.                     free(naj);
  84.                     naj = malloc(sizeof(int));
  85.                     if (naj == NULL) exit(0);
  86.                     /*2. if*/
  87.                     else naj[n_naj++] = j;
  88.                 }                /*Kraj 2. ifa*/
  89.  
  90.                 else if (a[i][j] == najveci) {
  91.                     naj_novi = realloc(naj, (n_naj + 1) * sizeof(int));
  92.  
  93.                     if (naj_novi == NULL) exit(0);
  94.                     else {
  95.                         naj = naj_novi;
  96.                         naj[n_naj++] = j;
  97.                     }
  98.                 }
  99.             } /*Kraj "j" for-a*/
  100.  
  101.             /*Provera kolona*/
  102.             for (k = 0; k < n_naj; k++) {
  103.                 for (l = 0; l < m; l++)
  104.                 if (a[l][naj[k]]>najveci) {
  105.                     check = 0;
  106.                     break;
  107.                 }
  108.                 if (check == 1) printf("(%d,%d) ", i + 1, naj[k] + 1);
  109.             } /*Kraj "k" for-a*/
  110.             free(naj);
  111.         } /*Kraj "i" for-a*/
  112.  
  113.         printf("\n");
  114.  
  115.         for (i = m - 1; i >= 0; i--) free(*(a + i));
  116.         free(a);
  117.     } /*Kraj 1. while-a*/
  118. } /*Kraj programa*/
Add Comment
Please, Sign In to add comment