brsjak

Zborovi palindromi - SP Lab 10

Nov 1st, 2016
787
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.12 KB | None | 0 0
  1. /*Зборови палиндроми Problem 3 (1 / 2)
  2. Да се направи програма која од влезната датотека „text.txt“ ќе ги одреди и отпечати сите зборови палиндроми во излезната датотека „print.txt“. Да се избегнуваат интерпукциските знаци точка (.) и запирка (,) и да не се прави разлика меѓу големи и мали букви.
  3.  
  4. Забелешка: Да не се менуваат дадените функции writeToFile() и printFile(). Тие служат за креирање и проверка на потребните датотеки.*/
  5.  
  6. #include <stdio.h>
  7. #include <ctype.h>
  8. #include <string.h>
  9.  
  10. void writeToFile() {
  11.     FILE *f = fopen("text.txt", "w");
  12.     char c;
  13.     while((c = getchar()) != '#') {
  14.         fputc(c, f);
  15.     }
  16.     fclose(f);
  17. }
  18.  
  19. void printFile() {
  20.     FILE *f=fopen("print.txt","r");
  21.     char line[100];
  22.     while(!feof(f)){
  23.         fgets(line,100,f);
  24.         if (feof(f))
  25.             break;
  26.         printf("%s",line);
  27.     }
  28.     fclose(f);
  29. }
  30.  
  31. int isPalindrom(char* str)
  32. {
  33.     int i, k = 0;
  34.     char tmp[101];
  35.  
  36.     for(i = 0; i < strlen(str); i++)
  37.     {
  38.         if(isalpha(str[i]))
  39.         {
  40.             tmp[k] = str[i];
  41.             k++;
  42.         }
  43.     }
  44.     tmp[k] = '\0';
  45.  
  46.     for(i = 0, k = strlen(tmp) - 1; i <= k; i++, k--)
  47.     {
  48.         if(toupper(*(tmp + i)) != toupper(*(tmp + k)))
  49.             return 0;
  50.     }
  51.  
  52.     // strncpy(str, tmp, strlen(tmp));
  53.     for(i = 0; i < strlen(tmp); i++)
  54.         str[i] = tmp[i];
  55.     str[i] = '\0';
  56.  
  57.     // printf("\n%s %s\n", str, tmp);
  58.     return 1;
  59. }
  60.  
  61. int main() {
  62.     writeToFile();
  63.  
  64.     FILE* input = fopen("text.txt", "r");
  65.     FILE* output = fopen("print.txt", "w");
  66.     int len, flag = 0;
  67.     char tmp[101];
  68.  
  69.     while((fscanf(input, "%s", tmp)) != EOF)
  70.     {
  71.         if(isPalindrom(tmp))
  72.             fprintf(output, "%s\n", tmp);
  73.  
  74.  
  75.     }
  76.     fclose(input);
  77.     fclose(output);
  78.  
  79.     printFile();
  80.     return 0;
  81.  
  82.     }
Add Comment
Please, Sign In to add comment