Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Зборови палиндроми Problem 3 (1 / 2)
- Да се направи програма која од влезната датотека „text.txt“ ќе ги одреди и отпечати сите зборови палиндроми во излезната датотека „print.txt“. Да се избегнуваат интерпукциските знаци точка (.) и запирка (,) и да не се прави разлика меѓу големи и мали букви.
- Забелешка: Да не се менуваат дадените функции writeToFile() и printFile(). Тие служат за креирање и проверка на потребните датотеки.*/
- #include <stdio.h>
- #include <ctype.h>
- #include <string.h>
- void writeToFile() {
- FILE *f = fopen("text.txt", "w");
- char c;
- while((c = getchar()) != '#') {
- fputc(c, f);
- }
- fclose(f);
- }
- void printFile() {
- FILE *f=fopen("print.txt","r");
- char line[100];
- while(!feof(f)){
- fgets(line,100,f);
- if (feof(f))
- break;
- printf("%s",line);
- }
- fclose(f);
- }
- int isPalindrom(char* str)
- {
- int i, k = 0;
- char tmp[101];
- for(i = 0; i < strlen(str); i++)
- {
- if(isalpha(str[i]))
- {
- tmp[k] = str[i];
- k++;
- }
- }
- tmp[k] = '\0';
- for(i = 0, k = strlen(tmp) - 1; i <= k; i++, k--)
- {
- if(toupper(*(tmp + i)) != toupper(*(tmp + k)))
- return 0;
- }
- // strncpy(str, tmp, strlen(tmp));
- for(i = 0; i < strlen(tmp); i++)
- str[i] = tmp[i];
- str[i] = '\0';
- // printf("\n%s %s\n", str, tmp);
- return 1;
- }
- int main() {
- writeToFile();
- FILE* input = fopen("text.txt", "r");
- FILE* output = fopen("print.txt", "w");
- int len, flag = 0;
- char tmp[101];
- while((fscanf(input, "%s", tmp)) != EOF)
- {
- if(isPalindrom(tmp))
- fprintf(output, "%s\n", tmp);
- }
- fclose(input);
- fclose(output);
- printFile();
- return 0;
- }
Add Comment
Please, Sign In to add comment