Привет! Помогите пожалуйста разобраться с задачей:
Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.
Так вот на поиске самого длинного слова и его сохранения я и застрял.
Вот текст программы:
Код: #include <fstream.h>
#include <windows.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
char* Rus(const char* text);
void Find(char to[], char from[]);
int main(){
ifstream fin("c:\\cpp\\text.txt", ios::in, ios::nocreate);
if(!fin){cout<<Rus("Ошибка открытия файла")<<endl; getch(); return 1;}
const int len=81;
char line[len], word[len], MaxWord[len];
int Len_MaxWord= 0;
while(fin.getline(line, len)){
cout<<Rus(line)<<endl;
Find(word, line);
if(strlen(word) > Len_MaxWord){
Len_MaxWord= strlen(word);
strcpy(MaxWord,word);
}
}
if(!Len_MaxWord){cout<<Rus("Пустой файл")<<endl; getch(); return 1;}
cout<<endl<<Rus("Самое длинное слово >> ");
cout<<Rus(MaxWord)<<endl;
cout<<Rus("Его длина >> ")<<Len_MaxWord<<endl;
getch();
return 0;
}
///////////////////////////////////////
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
///////////////////////////////////////
void Find(char to[], char from[]){
int i= 0, Len_Count, Len_Max, iMax;
iMax= -1; Len_Max= 0;
char *p= from;
char* c;
while(*p != 0){
while(ispunct(*p) || isspace(*p)) p++;
char* c= p;
for(Len_Count= 0; !ispunct(*p) && !isspace(*p) && *p != 0;
p++, Len_Count++);
if(Len_Count > Len_Max){
Len_Max= Len_Count;
iMax= *(p- Len_Max);
}
}
int j= 0;
if(iMax== -1) return;
else{
for(i= iMax; i< iMax+ Len_Max; j++, i++) to[j]= from[i];
to[j] = 0;
}
return;
}
///////////////////////////////////////
Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.
Так вот на поиске самого длинного слова и его сохранения я и застрял.
Вот текст программы:
Код: #include <fstream.h>
#include <windows.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
char* Rus(const char* text);
void Find(char to[], char from[]);
int main(){
ifstream fin("c:\\cpp\\text.txt", ios::in, ios::nocreate);
if(!fin){cout<<Rus("Ошибка открытия файла")<<endl; getch(); return 1;}
const int len=81;
char line[len], word[len], MaxWord[len];
int Len_MaxWord= 0;
while(fin.getline(line, len)){
cout<<Rus(line)<<endl;
Find(word, line);
if(strlen(word) > Len_MaxWord){
Len_MaxWord= strlen(word);
strcpy(MaxWord,word);
}
}
if(!Len_MaxWord){cout<<Rus("Пустой файл")<<endl; getch(); return 1;}
cout<<endl<<Rus("Самое длинное слово >> ");
cout<<Rus(MaxWord)<<endl;
cout<<Rus("Его длина >> ")<<Len_MaxWord<<endl;
getch();
return 0;
}
///////////////////////////////////////
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
///////////////////////////////////////
void Find(char to[], char from[]){
int i= 0, Len_Count, Len_Max, iMax;
iMax= -1; Len_Max= 0;
char *p= from;
char* c;
while(*p != 0){
while(ispunct(*p) || isspace(*p)) p++;
char* c= p;
for(Len_Count= 0; !ispunct(*p) && !isspace(*p) && *p != 0;
p++, Len_Count++);
if(Len_Count > Len_Max){
Len_Max= Len_Count;
iMax= *(p- Len_Max);
}
}
int j= 0;
if(iMax== -1) return;
else{
for(i= iMax; i< iMax+ Len_Max; j++, i++) to[j]= from[i];
to[j] = 0;
}
return;
}
///////////////////////////////////////