Cod sursa(job #200875)

Utilizator IrnukIrina Grosu Irnuk Data 27 iulie 2008 01:25:43
Problema Text Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
/*Text

Dezamagit de rezultatele sale la ultimul concurs, Paftenie a renuntat la programare si s-a concentrat strict asupra muncii laborioase, dar care implica mai putin efort intelectual. De aceasta data, el primeste un text si trebuie sa calculeze lungimea medie a cuvintelor textului, un cuvant fiind definit ca o secventa continua maximala de caractere ale alfabetului englez ('a' .. 'z' , 'A' .. 'Z'). Definim lungimea medie = (lungimea totala a cuvintelor textului) / (numarul de cuvinte ale textului).

Cerinta
Scrieti un program care ii rezolva problema lui Paftenie.

Date de intrare
Pe prima linie a fisierului de intrare text.in se gaseste textul dat.

Date de iesire
Fisierul de iesire text.out va contine pe prima linie un singur intreg, reprezentand partea intreaga a lungimii medii a cuvintelor textului.

*/

#include<fstream.h>
#include<string.h>
ifstream fin("text.in");
ofstream fout("text.out");

char s[1000000],c,sep[100]="0123456789- ;,.:'[]{}!~`@#$%^&*()_+=?/><",*p;
unsigned long sum,cont,cons,d=0,sum1,cont1;

void doi()
{
	ifstream fin("text.in");
	while(fin>>c)
	{
		if(c>='a' && c<='z' || c>='A' && c<='Z')
		{
			sum1++;

		}
		else
		{
			if(d>='a' && d<='z' || d>='A' && d<='Z') 
				cont1++;

		}
		d=c;

	}
}
int main()
{
	int i;
	while(fin.getline(s,1000000))
	{   

		p=strtok(s,sep);
		while(p!=NULL)
		{      
			sum+=strlen(p);
			p=strtok(NULL,sep);
			cont++;

	    }
		

	}
	fin.close();
	doi();
	if(cont==0)
		fout<<"0\n";
	else
	if(sum1>sum)

		fout<<sum1/cont1<<'\n';
	else fout<<sum/cont<<'\n';
//	cout<<sum1<<" "<<cont1<<'\n';
//	cout<<sum<<" "<<cont;
	fout.close();
	return 0;
}