Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / C++.Ашарина / !Сделанные / Lab4 / Var1
.cpp#include<conio.h>
#include<stdio.h>
#include<string.h>
const m=15, num=10;
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;
do
{
c=fgetc(in);
if (c!=' ' && c!='.' && c!=10 && c!=13 && !feof(in))
word[n++]=c;
}
while (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=0, i, f=1, p=1;
FILE *in, *out;
in=fopen(inname,"r");
do
{
word=FindWordFile(in);
if (strcmp(word,"")==0)
continue;
n++;
}
while (!feof(in));
fclose(in);
in=fopen(inname,"r");
words=new char*[n];
for (i=0;i<=n-1;i++)
words[i]=new char[m];
n=0;
do
{
word=FindWordFile(in);
if (strcmp(word,"")==0)
continue;
strcpy(words[n],word);
n++;
}
while (!feof(in));
while (f)
{
f=0;
for (i=0;i<=n-2;i++)
if (strlen(words[i])>strlen(words[i+1]))
{
strcpy(word,words[i]);
strcpy(words[i],words[i+1]);
strcpy(words[i+1],word);
f=1;
}
}
out=fopen(outname,"w");
strcpy(word,words[0]);
fprintf(out,"%s\n",words[0]);
i=1;
p=1;
while (p<=num-1 && i<=n-1)
{
if (strcmp(word,words[i])!=0)
{
fprintf(out,"%s\n",words[i]);
strcpy(word,words[i]);
p++;
}
i++;
}
if (num<n)
{
f=strlen(words[num]);
while (strlen(words[i])==f)
{
if (strcmp(word,words[i])!=0)
{
fprintf(out,"%s\n",words[i]);
strcpy(word,words[i]);
p++;
}
i++;
if (i>=n)
break;
}
}
fprintf(out,"Total number of words: %d\n",n);
fprintf(out,"Number of unique short words: %d\n",p);
fclose(in);
fclose(out);
}