Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. #define N 3                    
  6. #define X 4                             /* rozmer matice sa da lubovolne menit */
  7. #define MAT printf
  8.  
  9. int pole[X][X];
  10. void nacitaj(FILE*);
  11. int mocnina(int,int);
  12. void vypis();
  13.  
  14. int main()                              /* main - iba spusta funkcie */
  15. {
  16.     FILE *subor=NULL;                        
  17.     nacitaj(subor);
  18.     vypis();
  19.  
  20.    
  21.     getchar();
  22.     getchar();
  23.     return 0;
  24. }
  25.  
  26.  
  27. void nacitaj(FILE *subor)
  28. {
  29.     char c[20];                              /* Nacita binarne a zapise decimalne hodnoty matice do 2D pola */
  30.     char k;
  31.     int i=0,q=0,m,dec=0,f,j=0,u=0;
  32.  
  33. if((subor = fopen("MATICE.TXT", "r")) == NULL)                 /* Nacitanie suboru */
  34.     {
  35.         printf("Subor sa nepodarilo otvorit \n");
  36.     }
  37.     else
  38.     {
  39.         for(j;j<=N;j++)                                        /* Cykly na zapis pola */
  40.         {
  41.             for(u;u<=N;u++)
  42.             {
  43.     while(((k=getc(subor)) == '1' || k == '0') )      /* Nacitanie zo suboru (ak je 1 alebo 0 tak ho prehodi cez ordinarnu honotu) */
  44.     {
  45.         c[q]=k;
  46.         q++;
  47.        
  48.     }
  49.     i=q-1;
  50.    
  51.     for(i;i>=0;i--)                            /* iterator pre prevod (aby sa postupne zmensovali mocniny) */
  52.     {
  53.       m=c[i]-48;
  54.       f=q-i-1;
  55.     dec=dec+m*mocnina(2,f);                      /* Prevod do decimalnej sustavy */
  56.     }
  57.     q=0;
  58.     pole[j][u]=dec;
  59.     dec=0;
  60.  
  61.  
  62.         }
  63.             getc(subor);
  64.             u=0;
  65.     }
  66. }
  67.  
  68.  
  69.   fclose(subor);
  70. }
  71.  
  72. int mocnina(int a,int b)
  73. {
  74.     int i=1,o=1;                               /* Funkcia na mocniny */
  75.     for(i;i<=b;i++)
  76.     {
  77.         o=o*a;
  78.     }
  79. return o;
  80. }
  81.  
  82. void vypis()
  83. {
  84.     int x=0,y=0,i=0,cislo;
  85.     printf("MATICA S HODNOTAMI: \n");
  86.     for(x=0;x<=N;x++)
  87.     {
  88.       for(y=0;y<=N;y++)
  89.       {
  90.           if(pole[x][y]>9)                    /* aby program vedel kolko ma dat medzier medzi cislami aby to bolo zarovnane */
  91.           printf("%d   ",pole[x][y]);
  92.           else if(pole[x][y]>9910)
  93.           printf("%d   ",pole[x][y]);
  94.           else if(pole[x][y]<10)
  95.           printf("%d   ",pole[x][y]);
  96.       }
  97.       MAT("\n");
  98.     }
  99.  
  100.  
  101.     MAT("\n");
  102.  
  103.  
  104.     MAT("POROVNANIE PRVKOV NA DIAGONALE:\n");
  105.     for(x=0;x<=N;x++)
  106.   {
  107.       for(y=0;y<=N;y++)                                 /* Funkcia na vypis v decimalnom tvare a porovnanie na diagonale */
  108.       {
  109.          if(x==y)
  110.          {
  111.              
  112.              for(i=0;i<=N;i++)
  113.              {
  114.                  if(i!=y)
  115.                  {
  116.                 if(pole[x][y]>pole[x][i])
  117.                     MAT("Prvok %dx%d je vacsi ako prvok %dx%d\n",x+1,y+1,x+1,i+1);
  118.                 else if(pole[x][y]<pole[x][i])
  119.                     MAT("Prvok %dx%d je mensi ako prvok %dx%d\n",x+1,y+1,x+1,i+1);
  120.                 else if(pole[x][y]==pole[x][i])
  121.                     MAT("Prvky %dx%d a %dx%d su rovnake\n",x+1,y+1,x+1,i+1);
  122.                  }
  123.              }
  124.              MAT("\n");
  125.          }
  126.       }
  127.       y=0;
  128.   }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement