Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / C++.Ашарина / !Сделанные / Lab4 / Var5
.cpp#include<conio.h>
#include<stdio.h>
#include<string.h>
const m=15;
FILE *FindStringFile(FILE *in)
{
char c=0;
FILE *file;
file=fopen("d:\\temp.txt","w");
c=fgetc(in);
while ((c==10 || c==13 || c==-1) && !feof(in))
c=fgetc(in);
do
{
fputc(c,file);
c=fgetc(in);
}
while (c!=10 && c!=13 && c!=-1 && !feof(in));
if (c==-1)
return NULL;
return file;
}
char *FindWordFile(FILE *in)
{
char c=0, n=0, i, *word;
word=new char[m];
for (i=0;i<=m-1;i++)
word[i]=0;
c=fgetc(in);
while ((c==' ' || c==',' || c=='.' || c==10 || c==13) && !feof(in))
c=fgetc(in);
do
{
word[n++]=c;
c=fgetc(in);
}
while (c!=' ' && c!=',' && c!='.' && c!=10 && c!=13 && !feof(in));
return word;
}
void main()
{
clrscr();
char inname[]="d:\\in.txt", outname[]="d:\\out.txt", *word, **words;
int n, i, l, p;
FILE *in, *out, *temp;
in=fopen(inname,"r");
out=fopen(outname,"w");
fprintf(out,"Longest - Shortest:\n");
do
{
temp=FindStringFile(in);
if (temp==NULL)
{
continue;
fclose(temp);
}
fclose(temp);
temp=fopen("d:\\temp.txt","r");
n=0;
do
{
word=FindWordFile(temp);
if (word[0]==-1)
continue;
n++;
}
while(!feof(temp));
fclose(temp);
words=new char*[n];
for (i=0;i<=n-1;i++)
words[i]=new char[m];
temp=fopen("d:\\temp.txt","r");
n=0;
do
{
words[n]=FindWordFile(temp);
if (words[n][0]==-1)
continue;
n++;
}
while(!feof(temp));
l=strlen(words[0]);
p=0;
for (i=1;i<=n-1;i++)
{
if (strlen(words[i])>l)
{
l=strlen(words[i]);
p=i;
}
}
fprintf(out,"%s - ",words[p]);
l=strlen(words[0]);
p=0;
for (i=1;i<=n-1;i++)
{
if (strlen(words[i])<l)
{
l=strlen(words[i]);
p=i;
}
}
fprintf(out,"%s\n",words[p]);
fclose(temp);
}
while (!feof(in));
fclose(in);
fclose(out);
fclose(temp);
remove("d:\\temp.txt");
}