anotender

krzyzowka

Nov 26th, 2014
178
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.  
  6. char *losuj_wyraz(FILE *plik)
  7. {
  8.     int liczba_slow,numer,i;
  9.     char *wyraz=malloc(sizeof(char*));
  10.  
  11.     liczba_slow=0;
  12.     while (fscanf(plik,"%s",wyraz)!=EOF) liczba_slow++;
  13.  
  14.     numer=rand()%liczba_slow;
  15.  
  16.     rewind(plik);
  17.  
  18.     for(i=0;i<numer;i++)
  19.         fscanf(plik,"%s",wyraz);
  20.  
  21.     return wyraz;
  22. }
  23.  
  24. void losuj_slowa(FILE *plik,char *haslo,char **krzyzowka)
  25. {
  26.     int i;
  27.     for(i=0;i<strlen(haslo);i++)
  28.     {
  29.         while(1)
  30.         {
  31.             krzyzowka[i]=losuj_wyraz(plik);
  32.             if(krzyzowka[i][0]==haslo[i]) break;
  33.         }
  34.     }
  35. }
  36.  
  37. void zapisz(char *haslo,char **krzyzowka)
  38. {
  39.     FILE *plik=fopen("krzyzowka.txt","wt");
  40.     int i;
  41.     for(i=0;i<strlen(haslo);i++)
  42.     {
  43.         int j;
  44.         fprintf(plik,"   ");
  45.         if (i==0)
  46.         {
  47.             for (j=0;j<2*strlen(krzyzowka[i]);j++) fprintf(plik,"-");
  48.         }
  49.         else
  50.         {
  51.             if (strlen(krzyzowka[i])>strlen(krzyzowka[i-1]))
  52.             {
  53.                 for (j=0;j<2*strlen(krzyzowka[i]);j++) fprintf(plik,"-");
  54.             }
  55.             else for (j=0;j<2*strlen(krzyzowka[i-1]);j++) fprintf(plik,"-");
  56.         }
  57.         fprintf(plik,"\n");
  58.         fprintf(plik,"%-3d",i+1);
  59.         for(j=0;j<strlen(krzyzowka[i]);j++) fprintf(plik,"%c|",krzyzowka[i][j]);
  60.         fprintf(plik,"\n");
  61.     }
  62.     fprintf(plik,"   ");
  63.     for (i=0;i<2*strlen(krzyzowka[strlen(haslo)-1]);i++) fprintf(plik,"-");
  64.     fclose(plik);
  65. }
  66.  
  67. int main()
  68. {
  69.     srand(time(NULL));
  70.     FILE *plik=fopen("plik.txt","rt");
  71.     char **krzyzowka;
  72.     char *haslo;
  73.     if(plik==NULL)
  74.     {
  75.         printf("Blad");
  76.         return 1;
  77.     }
  78.  
  79.     haslo=losuj_wyraz(plik);
  80.     printf("haslo: %s\n",haslo);
  81.  
  82.     krzyzowka=malloc(sizeof(char*)*strlen(haslo));
  83.  
  84.     losuj_slowa(plik,haslo,krzyzowka);
  85.  
  86.     zapisz(haslo,krzyzowka);
  87.  
  88.     system("gedit krzyzowka.txt");
  89.  
  90.     return 0;
  91. }
RAW Paste Data