Палиндром. Чтение из файла. Удаление знаков препинания - C (СИ)
Формулировка задачи:
Здравствуйте. Помогите исправить ошибку. Программа выполняет чтение из файла
предложения
, удаляет знаки препинания и получается одно длинное слово. Далее прог-мапроверяет его на палиндром
( палиндром слово читающееся одинаково в обоих направлениях) и выводит рез-т. Проблема в том,что результат проверки не верный.#include <stdio.h> #include <string.h> #include <stdlib.h> //проверка на палиндром---------------------------------------- int check (char str[]) { int i,length; length=strlen(str); if (length==1) return 0; for (i=0;i<length;i++) if (str[i]!=str[(length-1)-i]) return 0; return 1; } //конец проверки ---------------------------------------- int main() { char str[80]; FILE *file; if ((file=fopen("test.txt","r"))==NULL) { puts("File not found!"); return 1; } char *mass; mass = malloc(sizeof(char) * 1000); fgets(str,80,file); int i,j; for(i = 0, j = 0; str[i]; ++i) { if((str[i] >= ' ' && str[i] <= '/') || (str[i] >= ':' && str[i] <= '\\')|| (str[i] >= ',' && str[i] <= '_')) continue; mass[j] = str[i]; j++; } printf("массив: %s\n", mass); //---------------вызываем функцию проверки на палиндром if (check(mass)==1) printf (" \n Слово: %s Палиндром \n", mass); else printf("\n Слово: %s Не палиндром \n",mass); //------------------------------------------------------- free(mass); return 0; }
Решение задачи: «Палиндром. Чтение из файла. Удаление знаков препинания»
textual
Листинг программы
if((str[i] >= ' ' && str[i] <= '/') || (str[i] >= ':' && str[i] <= '\\')|| (str[i] >= ',' && str[i] <= '_') || str[i] == '\n')
Объяснение кода листинга программы
- В условии используется оператор
или
(||), который проверяет, удовлетворяет ли символ любому из трех условий. - Первое условие: str[i] >= ' ' && str[i] <= '/'. Сравниваются символы строки str, начиная с индекса i, с пробелом (' ') и знаком
/
. Это означает, что в строке проверяются все символы от пробела до знака/
. - Второе условие: str[i] >= ':' && str[i] <= '\'. Сравниваются символы строки str, начиная с индекса i, с знаком
:
и знаком\
. Это означает, что в строке проверяются все символы от знака:
до знака\
. - Третье условие: str[i] >= ',' && str[i] <= ''. Сравниваются символы строки str, начиная с индекса i, с запятой (',') и знаком `
. Это означает, что в строке проверяются все символы от запятой до знака
_`. - Четвертое условие: str[i] == '\n'. Проверяется, равен ли символ строки str, начиная с индекса i, символу новой строки ('\n'). Это означает, что в строке проверяется сам символ новой строки.
- Если условие выполняется, то происходит удаление символа из строки. Как именно это происходит, не указано в предоставленном коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д