Advertisement
Guest User

Untitled

a guest
Apr 10th, 2020
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define SUBOR "tajnicka.txt"
  4. #define N 3
  5.  
  6.  
  7.  
  8. char **nacitaj(FILE *f,char **smerovka) {
  9.     int m,n;
  10.     int riadky=0,stplce=0;
  11.     char c;
  12.     int necitat=0;
  13.  
  14.     if ((f = fopen(SUBOR, "r")) == NULL) {
  15.         printf("Nepodarilo sa otvorit subor\n");
  16.         exit(0);
  17.     }
  18.  
  19.     // ---------------- ZISTENIE VEĽKOSTI POĽA -----------------//
  20.     fscanf(f, "%d %d",&m, &n );
  21.     printf("%d %d\n",m,n);
  22.  
  23.     // M - riadky
  24.  
  25.     // N - stlpce
  26.  
  27.     // ----------------------- MALLOC POLA  --------------------//
  28.  
  29.     smerovka = (char**)malloc(m * sizeof(char*));
  30.     for (int k = 0; k < n ; k++) {
  31.         smerovka[k] = (char*)malloc(n * sizeof(char));
  32.     }
  33.  
  34.     // ----------------- NAČÍTAVANIE TAJNIČKY -------------------//
  35.     while( (c=fgetc(f)) != EOF ) {
  36.  
  37.         if(c>='A' && c <= 'Z') {
  38.             smerovka[riadky][stplce] = c;
  39.             printf("%c",smerovka[riadky][stplce]);
  40.             stplce++;
  41.         }
  42.         if(c =='\n'){
  43.             necitat++;
  44.             if(necitat>1) {
  45.                 riadky++;
  46.                 stplce = 0;
  47.                 printf("\n");
  48.             }
  49.         }
  50.  
  51.         if(riadky==m)
  52.             break;
  53.  
  54.  
  55.     }
  56.  
  57.  
  58.     fclose(f);
  59.     return smerovka;
  60.  
  61. }
  62.  
  63. int **vyskyt(char **smerovka,int **index){
  64.  
  65.     FILE *f;
  66.     int m;
  67.     int n;
  68.     int x=0;
  69.     char abc = 'A';
  70.     // int **index;
  71.     //int **index;
  72.  
  73.  
  74.  
  75.     index = (int**)malloc(26 * sizeof(int*));
  76.     for (int rea = 0; rea < 26 ; rea++) {
  77.         index[rea] = (int*)malloc(N*2 * sizeof(int));
  78.     }
  79.  
  80.  
  81.     // ----------------- HODNOTY M,N -------------------//
  82.  
  83.     if ((f = fopen(SUBOR, "r")) == NULL);
  84.     fscanf(f, "%d %d",&m, &n );
  85.     //printf("%d %d\n",m,n);
  86.  
  87.  
  88.  
  89.  
  90.     // ----------------- HODIM TAM -1 -------------------//
  91.  
  92.  
  93.     for (int l = 0; l < 26 ; l++) {
  94.         for (int i = 0; i < N ; i++) {
  95.             index[l][i] = -1;
  96.             // printf("%d",index[l][i]);
  97.  
  98.         }
  99.         //printf("\n");
  100.  
  101.     }
  102.     // ----------------- NAČÍTAVANIE HODNOT M,N -------------------//
  103.  
  104.  
  105.     int pocet[26]={0};
  106.         for ( int i = 0; i < m; i++) {           //RIADKY
  107.             for ( int j = 0; j < n; j++) {       //STLPCE
  108.                     pocet[smerovka[i][j]-abc]++;
  109.                     index[smerovka[i][j]-abc] = (int *) realloc(index[smerovka[i][j]-abc], (N *pocet[smerovka[i][j]-abc]  * sizeof(int)));
  110.                         // ----------------- DÁVAME -1 NA ZVYŠOK -------------------//
  111.                     // ----------------- ZÁPIS SÚRADNÍC -------------------//
  112.                     index[smerovka[i][j]-abc][sem musis vymysliet nejaky sposob] = i;//X suradnica
  113.                     index[smerovka[i][j]-abc][sem musis vymysliet nejaky sposob+1] = j;    // Y suradnica
  114.                 }
  115.             }
  116.  
  117.     // ----------------- KTORÉ PÍSMENO NEMÁ ŽIADNU SÚRADNICU TAK NULL -------------------//
  118.  
  119.     /*for (int k1 = 0; k1 < 26 ; k1++) {
  120.         if(index[k1][0]==-1){
  121.             for (int i = 0; i < N* realoc+colmax; i++) {
  122.                 index[k1][i]=NULL;
  123.  
  124.             }
  125.  
  126.         }
  127.  
  128.     }
  129.  
  130.     //printf("COL MAX%d\n",colmax);
  131.  
  132.  
  133.     for (int i1 = 0; i1 < 26; i1++) {
  134.         printf("%c:",i1+'A');
  135.         for (int i = 0; i < N*realoc+colmax ; i++) {
  136.             // if(index[i1][i]>=0) {
  137.             printf("%d", index[i1][i]);
  138.         }
  139.         //}
  140.         printf("\n");
  141.     }
  142. */
  143.  
  144.     return index;
  145.  
  146.  
  147.  
  148. }
  149.  
  150. int stvorsmerovka (char **smerovka, int **index ){
  151.  
  152.     FILE *f;
  153.     int m;
  154.     int n;
  155.     char c;
  156.     int zalomenie=0;
  157.     int stlpcei = 0;
  158.  
  159.     if ((f = fopen(SUBOR, "r")) == NULL);
  160.     fscanf(f, "%d %d",&m, &n );
  161.     printf("STVORSMER: %d %d\n",m,n);
  162.  
  163.  
  164.     // ----------------ZISTIM POČET STPCOV PRE IDEX -----------------//
  165.     for (int i = 0; i < 25 ; i++) {
  166.         //printf("%d",index[0][i] );
  167.         stlpcei++;
  168.         if(i%2!=0)
  169.             if (index[0][i+1]==0)
  170.                 if(index[0][i+2]==0)
  171.                     if(index[0][i+3]==0)
  172.                         break;
  173.  
  174.  
  175.     }
  176.  
  177.     printf("\nPOCET STPCOV PRE INDEX: %d\n",stlpcei);
  178.  
  179.  
  180.  
  181.     // ---------------- ČÍTAM TAJNIČKU -----------------//
  182.  
  183.     while( (c=fgetc(f)) != EOF ) {
  184.         if(c== '\n' )
  185.             zalomenie++;
  186.  
  187.         if(zalomenie>m){
  188.             printf("%c",c);
  189.  
  190.         }
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.     }
  199.  
  200.     printf("\nzalomene je: %d\n",zalomenie);
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207. }
  208.  
  209.  
  210. int main() {
  211.     char **smerovka;
  212.     //char abc[26] = { 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
  213.     FILE *f;
  214.     int **index;
  215.  
  216.  
  217.  
  218.  
  219.     smerovka = nacitaj(f,smerovka);
  220.  
  221.     index = vyskyt(smerovka,index);
  222.  
  223.     /*for (int i1 = 0; i1 < 26; i1++) {
  224.         printf("%c:",i1+'A');
  225.         for (int i = 0; i < 20 ; i++) {
  226.             // if(index[i1][i]>=0) {
  227.             printf("%d", index[i1][i]);
  228.         }
  229.         //}
  230.         printf("\n");
  231.     } */
  232.  
  233.     stvorsmerovka(smerovka,index);
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.     return 0;
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement