Вывод на консоль самого длинного слова - 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;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с консолью и строками
- Устанавливаем русскую локаль для работы с русскими символами
- Объявляем переменные: буфер для чтения из файла, макс. слово и его длину, счётчик для подсчёта количества одинаковых слов
- Открываем файл «data.txt» для чтения
- В цикле считываем строки из файла и проверяем их длину, обновляя при необходимости значения макс. длины и самого длинного слова
- Сбрасываем указатель файла в начало для повторного чтения всех строк
- В цикле сравниваем каждое слово с самым длинным и увеличиваем счётчик при совпадении
- Выводим на экран самое длинное слово, его длину и количество совпадений
- Ждём нажатия любой клавиши для завершения работы программы