Палиндром. Чтение из файла. Удаление знаков препинания - 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')

Объяснение кода листинга программы

  1. В условии используется оператор или (||), который проверяет, удовлетворяет ли символ любому из трех условий.
  2. Первое условие: str[i] >= ' ' && str[i] <= '/'. Сравниваются символы строки str, начиная с индекса i, с пробелом (' ') и знаком /. Это означает, что в строке проверяются все символы от пробела до знака /.
  3. Второе условие: str[i] >= ':' && str[i] <= '\'. Сравниваются символы строки str, начиная с индекса i, с знаком : и знаком \. Это означает, что в строке проверяются все символы от знака : до знака \.
  4. Третье условие: str[i] >= ',' && str[i] <= ''. Сравниваются символы строки str, начиная с индекса i, с запятой (',') и знаком `. Это означает, что в строке проверяются все символы от запятой до знака_`.
  5. Четвертое условие: str[i] == '\n'. Проверяется, равен ли символ строки str, начиная с индекса i, символу новой строки ('\n'). Это означает, что в строке проверяется сам символ новой строки.
  6. Если условие выполняется, то происходит удаление символа из строки. Как именно это происходит, не указано в предоставленном коде.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы