Вывод на консоль самого длинного слова - C (СИ)

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

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

#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
using namespace std;
int main()
{system("chcp 1251>0");
char s[8000]="";
FILE *F;
if((F=fopen("D:\\PROBA2.txt","r"))==NULL)
    {printf ("Немогу открыть файл\n");
    return 1;}
char simvol, malloc(8000);
for (int i = 0; (simvol=getc(F))!=EOF; i++)
    s[i]=simvol;
    fclose(F);
printf ("D:\\PROBA2.txt\n\%s\n\n", s);
int maxStart, maxLen=0, len=0;
for (int i=0; i<strlen(s); i++)
    {
        if(s[i]!=' ' && s[i]!='\n' && i<strlen(s)-1)
    {
        len++;
    }
else
    { if (i==strlen(s)-1){len++; i++;}
      if(len>maxLen){maxLen=len; maxStart = i-maxLen;}
 
      len=0;
    }
    }
printf ("\nСлово(a) максимальной длины в файле PROBA.txt:\n\n");
for (int i=0l; i < strlen(s); i++)
{   if (s[i]!=' ' && s[i]!='\n' && i<strlen(s)-1)
    {
        len++;
    }
    else
    {if (i==strlen(s)-1){len++; i++;}
     if (len==maxLen)
      {
        for (int j=i-maxLen;  j<=i; j++)
            {
            fputc (s[j], F);
 
            }
 
        }
 
     len=0;
     }
}
printf("\n Длинная самого длинного слова равна %d символов.\n", maxLen);
 
getch();
}
Вот код программы который выводит длину саммого длинного слова, помогите вывести на экран само это слово, и сколько раз оно встречается. Пожалуйста.

Решение задачи: «Вывод на консоль самого длинного слова»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <locale.h>
 
int main()
{   setlocale (LC_CTYPE, "Russian");
    char buf [BUFSIZ], max_word [BUFSIZ];
    int max_len = 0, count = 0;
    
    FILE *fin = fopen ("data.txt", "r");
    if (!fin)
    {   printf("Ошибка чтения файла\n");
        return 1;
    }
 
    while (fscanf(fin, "%s", buf) != EOF)
    {   if (strlen(buf) > max_len)
        {   max_len = strlen(buf);
            strcpy (max_word, buf);
        }
    }
 
    fflush (fin);
    rewind (fin);
    while (fscanf(fin, "%s", buf) != EOF)
    {   if (strcmp (max_word, buf) == 0)
            count++;
    }
    fclose (fin);
 
    printf ("Word: %s; Length: %d; Count: %d", max_word, max_len, count);
    
    getchar();
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с консолью и строками
  2. Устанавливаем русскую локаль для работы с русскими символами
  3. Объявляем переменные: буфер для чтения из файла, макс. слово и его длину, счётчик для подсчёта количества одинаковых слов
  4. Открываем файл «data.txt» для чтения
  5. В цикле считываем строки из файла и проверяем их длину, обновляя при необходимости значения макс. длины и самого длинного слова
  6. Сбрасываем указатель файла в начало для повторного чтения всех строк
  7. В цикле сравниваем каждое слово с самым длинным и увеличиваем счётчик при совпадении
  8. Выводим на экран самое длинное слово, его длину и количество совпадений
  9. Ждём нажатия любой клавиши для завершения работы программы

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


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

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

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