Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
17.04.2013
Размер:
1.76 Кб
Скачать
#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);
}
Соседние файлы в папке Lab4