Считать текст из файла и вывести на экран все слова с максимальной длиной - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Напишите программу, которая считывает текст из файла и выводит на экран все слова, с максимальной длиной. Необходимо предусмотреть случай, если файла не существует. Подскажите кто решения или хотя бы идею (нахождение слов с максимальной длинной) Вот проверка на существование файла и вывод его содержимого на экран:
#include <fstream.h>
 #include <string.h>
 #include <stdio.h>
 #include <conio.h>
 
int main()
{
char s[1000];
 FILE * f;
 clrscr ();
 if ((f=fopen("readme.txt", "rt")) == NULL) {cout <<"fail ne najden" ;}
do {
int Char=fgetc (f);
if (Char != EOF) putchar (Char);
} while (!feof (f));
 getch ();
 return 0;
 }
Друзья, помагите пожайлуста!!! Вот я написал кое-что....низнаю даже где и ошибка....Он вообще ничего не выводит кроме длины самого длинного слова. Наверное это потому что когда я первый раз "прошелся по файлу" его надо закрыть, а затем заново открывать...я же не закрывал (а если и закрывал то при выполнение программы она зависала и приходилась нажимать "ctrl+break") Вот примерный алгоритм: сначала я нашел самое длинное слово (слова)=max.....а затем пробовал заново "пройтись по файлу" и найти и вывести все слова равные длинне max...
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
int main()
{
   clrscr ();
   FILE *f;
   int max;
   char *e;
   char s[255];
   int k,d,i,ii;
   f = fopen("lol.txt", "rt");
   if (f==NULL)
   {
      printf("Owibka\n");
      getch ();
      return 0;
   }
   max=0;  ii=0;
   k=0;
   d=0;
   i=0;
   while(feof(f)==NULL)
   {
      e[0]=fgetc(f);
      if (e[0]!=' ') k++;
      if (e[0]==' ')
      {
     if (k>max)
     {
        (max=k);
 
     }
     k=0;
      }
   }
   // fclose (f);

     //  f=fopen ("log.txt","rt");
     while(feof(f)==NULL)
     {
        e[0]=fgetc(f);
        i++;
        s[i]=e[0];
        if (e[0]!=' ') {(d++) ; }
        if ((e[0]==' ') && (d==max))
        {
           ii=i-max; // возращение к началу слова
           for (int h=ii; h>=i; h++)
           {
          printf ("%s",s[h]);
          d=0;
          ii=0;
           }
        }
 
      }
 
   fclose(f);
   cout<<max;
   getch();
   return 0;
}

Решение задачи: «Считать текст из файла и вывести на экран все слова с максимальной длиной»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
int main()
{
   clrscr ();
   int ggg;
   FILE *f;
   int max;
   char *e;
   char s[255];
   int k,d,i,ii,m,h;
   f = fopen("readme.txt", "rt");
   if (f==NULL)
   {
      printf("Owibka\n");
      getch ();
      return 0;
   }
   cout<<"Samye dlinnye slova:\n";
   max=0;  ii=0; k=0; m=0; d=0; i=0;
   while(feof(f)==NULL)
   {
      e[0]=fgetc(f);
      if (e[0]!=' ') k++;
      if (e[0]==' ')
      {
         if (k>max)
     {
        (max=k);
 
     }
      k=0;
      }
   }
   fseek (f,0,SEEK_SET);
   while(feof(f)==NULL)
   {
      e[0]=fgetc(f);
      s[i]=e[0];
      if (e[0]!=' ') (d++) ;
      if (e[0]==' ')
      {
         if (d==max)
    {
            ii=i-max;
        m=i;
        for (h=ii; h<=m; h++)
        {
           printf ("%c",s[h]);
        }
        ii=0;
        d=0;
         }
         else
         d=0;
      } 
   i++;
   }
   fclose (f);
   getch();
   return 0;
}

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

В этом коде считывается текст из файла и выводятся на экран все слова с максимальной длиной. Вот список действий, которые выполняются в коде:

  1. Включаются необходимые заголовочные файлы:
    • stdio.h для работы с стандартными вводом/выводом
    • conio.h для работы с функцией getch(), которая используется для приостановки выполнения программы до нажатия клавиши
    • stdlib.h для работы с функцией atoi(), которая преобразует строку в целое число
    • string.h для работы со строками
    • iostream.h для работы с объектами ввода/вывода
  2. Считывается текст из файла:
    • fopen() открывает файл для чтения
    • Если файл не может быть открыт, выводится сообщение об ошибке и программа завершается
    • Файл считывается в память
  3. Находится самое длинное слово:
    • Переменная max инициализируется нулем, что означает, что самое длинное слово еще не найдено
    • Переменная k отслеживает количество символов в текущем слове
    • Если текущий символ не является пробелом, увеличивается k
    • Когда встречается пробел, проверяется, является ли текущее слово самым длинным
    • Если да, то значение max обновляется значением k
    • Значение k сбрасывается в ноль для следующего слова
  4. Выводятся самые длинные слова:
    • Переменная d отслеживает количество символов в текущем слове
    • Переменная i отслеживает индекс текущего слова в массиве
    • Если текущий символ не является пробелом, увеличивается d
    • Когда встречается пробел, проверяется, является ли текущее слово самым длинным
    • Если да, то слово выводится на экран
    • Значение d сбрасывается в ноль для следующего слова
    • Значение i сбрасывается в ноль после вывода всех слов
  5. Закрывается файл и программа завершается:
    • Вызывается функция fclose(), чтобы закрыть файл
    • Вызывается функция getch(), чтобы приостановить выполнение программы до нажатия клавиши
    • Программа возвращает ноль, что означает успешное завершение

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


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

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

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