Nu aveti permisiuni pentru a descarca fisierul grader_test1.in
Cod sursa(job #200875)
Utilizator | 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;
}