Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define SUBOR "tajnicka.txt"
- #define N 3
- char **nacitaj(FILE *f,char **smerovka) {
- int m,n;
- int riadky=0,stplce=0;
- char c;
- int necitat=0;
- if ((f = fopen(SUBOR, "r")) == NULL) {
- printf("Nepodarilo sa otvorit subor\n");
- exit(0);
- }
- // ---------------- ZISTENIE VEĽKOSTI POĽA -----------------//
- fscanf(f, "%d %d",&m, &n );
- printf("%d %d\n",m,n);
- // M - riadky
- // N - stlpce
- // ----------------------- MALLOC POLA --------------------//
- smerovka = (char**)malloc(m * sizeof(char*));
- for (int k = 0; k < n ; k++) {
- smerovka[k] = (char*)malloc(n * sizeof(char));
- }
- // ----------------- NAČÍTAVANIE TAJNIČKY -------------------//
- while( (c=fgetc(f)) != EOF ) {
- if(c>='A' && c <= 'Z') {
- smerovka[riadky][stplce] = c;
- printf("%c",smerovka[riadky][stplce]);
- stplce++;
- }
- if(c =='\n'){
- necitat++;
- if(necitat>1) {
- riadky++;
- stplce = 0;
- printf("\n");
- }
- }
- if(riadky==m)
- break;
- }
- fclose(f);
- return smerovka;
- }
- int **vyskyt(char **smerovka,int **index){
- FILE *f;
- int m;
- int n;
- int x=0;
- char abc = 'A';
- // int **index;
- //int **index;
- index = (int**)malloc(26 * sizeof(int*));
- for (int rea = 0; rea < 26 ; rea++) {
- index[rea] = (int*)malloc(N*2 * sizeof(int));
- }
- // ----------------- HODNOTY M,N -------------------//
- if ((f = fopen(SUBOR, "r")) == NULL);
- fscanf(f, "%d %d",&m, &n );
- //printf("%d %d\n",m,n);
- // ----------------- HODIM TAM -1 -------------------//
- for (int l = 0; l < 26 ; l++) {
- for (int i = 0; i < N ; i++) {
- index[l][i] = -1;
- // printf("%d",index[l][i]);
- }
- //printf("\n");
- }
- // ----------------- NAČÍTAVANIE HODNOT M,N -------------------//
- int pocet[26]={0};
- for ( int i = 0; i < m; i++) { //RIADKY
- for ( int j = 0; j < n; j++) { //STLPCE
- pocet[smerovka[i][j]-abc]++;
- index[smerovka[i][j]-abc] = (int *) realloc(index[smerovka[i][j]-abc], (N *pocet[smerovka[i][j]-abc] * sizeof(int)));
- // ----------------- DÁVAME -1 NA ZVYŠOK -------------------//
- // ----------------- ZÁPIS SÚRADNÍC -------------------//
- index[smerovka[i][j]-abc][sem musis vymysliet nejaky sposob] = i;//X suradnica
- index[smerovka[i][j]-abc][sem musis vymysliet nejaky sposob+1] = j; // Y suradnica
- }
- }
- // ----------------- KTORÉ PÍSMENO NEMÁ ŽIADNU SÚRADNICU TAK NULL -------------------//
- /*for (int k1 = 0; k1 < 26 ; k1++) {
- if(index[k1][0]==-1){
- for (int i = 0; i < N* realoc+colmax; i++) {
- index[k1][i]=NULL;
- }
- }
- }
- //printf("COL MAX%d\n",colmax);
- for (int i1 = 0; i1 < 26; i1++) {
- printf("%c:",i1+'A');
- for (int i = 0; i < N*realoc+colmax ; i++) {
- // if(index[i1][i]>=0) {
- printf("%d", index[i1][i]);
- }
- //}
- printf("\n");
- }
- */
- return index;
- }
- int stvorsmerovka (char **smerovka, int **index ){
- FILE *f;
- int m;
- int n;
- char c;
- int zalomenie=0;
- int stlpcei = 0;
- if ((f = fopen(SUBOR, "r")) == NULL);
- fscanf(f, "%d %d",&m, &n );
- printf("STVORSMER: %d %d\n",m,n);
- // ----------------ZISTIM POČET STPCOV PRE IDEX -----------------//
- for (int i = 0; i < 25 ; i++) {
- //printf("%d",index[0][i] );
- stlpcei++;
- if(i%2!=0)
- if (index[0][i+1]==0)
- if(index[0][i+2]==0)
- if(index[0][i+3]==0)
- break;
- }
- printf("\nPOCET STPCOV PRE INDEX: %d\n",stlpcei);
- // ---------------- ČÍTAM TAJNIČKU -----------------//
- while( (c=fgetc(f)) != EOF ) {
- if(c== '\n' )
- zalomenie++;
- if(zalomenie>m){
- printf("%c",c);
- }
- }
- printf("\nzalomene je: %d\n",zalomenie);
- }
- int main() {
- char **smerovka;
- //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'};
- FILE *f;
- int **index;
- smerovka = nacitaj(f,smerovka);
- index = vyskyt(smerovka,index);
- /*for (int i1 = 0; i1 < 26; i1++) {
- printf("%c:",i1+'A');
- for (int i = 0; i < 20 ; i++) {
- // if(index[i1][i]>=0) {
- printf("%d", index[i1][i]);
- }
- //}
- printf("\n");
- } */
- stvorsmerovka(smerovka,index);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement