tdulik

Generator křížovek

Oct 31st, 2020
813
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. int mujRand(int rozsah) {
  6.     return (rand() * rand()) % rozsah;
  7. }
  8. int main()
  9. {
  10.     srand(time(NULL));
  11.     FILE * soubor = fopen("d:\\temp\\CZ\\CZ.txt", "r");
  12.     if (soubor==NULL) {
  13.         puts("Soubor nelze otevrit");
  14.         return 0;
  15.     }
  16.     printf("Generator krizovek\n");
  17.     fseek(soubor, 0, SEEK_END);
  18.     int velikost = ftell(soubor);
  19.     fseek(soubor, 0, SEEK_SET);
  20.     printf("Velikost=%d\n", velikost);
  21.     char * pole = malloc(velikost);
  22.     if (pole == NULL) {
  23.         puts("Nepodarilo se alokovat tolik pameti..");
  24.         return 0;
  25.     }
  26.     int znak;
  27.     int i=0, radku=0;
  28.     while ((znak=fgetc(soubor))!=EOF) {
  29.         pole[i] = znak;
  30.         if (znak=='\n') radku++;
  31.         i++;
  32.     }
  33.     printf("Nacteno %d radku\n", radku);
  34.     int * indexyRadku = malloc(radku * sizeof (int));
  35.     i=0;
  36.     for (int index=0; index<radku; index++) {
  37.         indexyRadku[index] = i;
  38.         while (pole[i]!='\n') i++;
  39.         pole[i]=0;
  40.         i++;
  41.     }
  42.     char * tajenka = pole + indexyRadku[mujRand(radku)];
  43.     printf("tajenka=%s\n", tajenka);
  44.     for (int i=0; i<strlen(tajenka); i++) {
  45.         char pismeno=tajenka[i];
  46.         char * slovo;
  47.         char * ukPismena;
  48.         do {
  49.             slovo = pole + indexyRadku[mujRand(radku)];
  50.             ukPismena = strchr(slovo, pismeno);
  51.         } while (ukPismena == NULL);
  52.         for (int i=0; i<40-(ukPismena-slovo); i++) putchar(' ');
  53.         for (char *uk=slovo; uk<ukPismena; uk++)
  54.             putchar(*uk);
  55.         printf("|%c|%s\n", pismeno, ukPismena+1);
  56.     }
  57.  
  58.     fclose(soubor);
  59.     return 0;
  60. }
  61.  
RAW Paste Data