Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define SUBOR "osemsmerovka.txt"
- #define VELKOST_ABECEDY 26
- #define VELKOST_INDEXU 5
- char** nacitanie_suboru(int *riadok, int *stlpec, int *pocet_slov){
- char **osemsmerovka;
- FILE *fr;
- if ((fr=fopen(SUBOR, "r"))==NULL){
- printf("Subor sa nepodarilo otvort.\n");
- return 0;
- }
- fscanf(fr, "%d %d\n", riadok, stlpec);
- printf("%d %d\n", *riadok, *stlpec);
- osemsmerovka = (char **) malloc (*riadok * sizeof(char *));
- for (int i=0; i<*riadok;i++){
- osemsmerovka[i] = (char *) malloc (*stlpec * sizeof(char));
- for (int j=0; j<*stlpec; j++) {
- fscanf(fr, "%c", &osemsmerovka[i][j]);
- }
- fgetc(fr);
- }
- char c;
- int n=0;
- //Pocet slov
- while ((c=getc(fr))!=EOF){
- if (c=='\n')
- n++;
- }
- n=n-1;
- *pocet_slov=n;
- if (fclose(fr)==EOF){
- printf("Subor sa nepodarilo zatovrit.\n");
- return 0;
- }
- return osemsmerovka;
- }
- char nacitanie_slov(int pocet_slov, int riadok){
- char *slova;
- FILE *fr;
- if ((fr=fopen(SUBOR, "r"))==NULL){
- printf("Subor sa nepodarilo otvort.\n");
- return 0;
- }
- slova = (char *) malloc(pocet_slov * sizeof(char));
- char c;
- int n=0;
- while ((c=getc(fr))!=EOF){
- if (c=='\n')
- n++;
- if (n-1==riadok)
- break;
- }
- int i = 0;
- while ((fscanf(fr, "%s,", &slova[i]))!=EOF) {
- if (slova[i] == '\n')
- i++;
- printf("%s\n", slova);
- }
- if (fclose(fr)==EOF){
- printf("Subor sa nepodarilo zatovrit.\n");
- return 0;
- }
- return *slova;
- }
- int** vytvor_abecedu(int velkost, int velkost_indexu){
- int **abeceda = (int **) malloc(velkost * sizeof(int *));
- for (int i=0; i<velkost; i++){
- abeceda[i] = (int *) malloc(velkost_indexu * sizeof(int));
- memset(abeceda[i], -1, velkost_indexu);
- }
- return abeceda;
- }
- void vypis_maticu(char **matica, int riadok, int stlpec){
- for (int i=0; i<riadok; i++){
- for (int j=0; j<stlpec; j++){
- printf("%c", matica[i][j]);
- }
- putchar('\n');
- }
- }
- int *zvacsi_velkost(int **matica, int riadok, int stlpec, int index[]){
- char c='A';
- int pocet=0;
- for (int i=0; i<VELKOST_ABECEDY; i++){
- for (int j=0; j<stlpec; j++){
- for (int k=0; k<stlpec; k++) {
- if (matica[j][k] == c) {
- pocet++;
- index[i] = matica[j][k];
- printf("%d%d ", index[j], index[k]);
- }
- }
- }
- if (i>VELKOST_ABECEDY)
- index = realloc(index, VELKOST_INDEXU * sizeof(int));
- pocet=0;
- c++;
- }
- return index;
- }
- void pocet_vyskytov(char **matica, int riadok, int stlpec, int **abeceda){
- char c='A';
- int pocet=0;
- for (int i=0; i<VELKOST_ABECEDY;i++){
- for (int j=0; j<riadok; j++){
- for (int k = 0; k < stlpec ; k++) {
- if (matica[j][k]==c) {
- *abeceda[i] = ++pocet;
- }
- }
- }
- pocet=0;
- c++;
- }
- char pismeno='A';
- for (int m=0; m<VELKOST_ABECEDY; m++)
- printf("%c:%d\n", pismeno++, *abeceda[m]);
- }
- int main(){
- int **abeceda = vytvor_abecedu(VELKOST_ABECEDY, VELKOST_INDEXU);
- int riadok = 0, stlpec = 0, pocet_slov=0;
- int vyskyt[26];
- char *slova;
- int index[VELKOST_INDEXU];
- char **osemsmerovka = nacitanie_suboru(&riadok, &stlpec, &pocet_slov);
- vypis_maticu(osemsmerovka, riadok, stlpec);
- nacitanie_slov(pocet_slov, riadok);
- zvacsi_velkost(abeceda, riadok, stlpec, index);
- putchar('\n');
- pocet_vyskytov(osemsmerovka, riadok, stlpec, abeceda);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement