Cod sursa(job #2072351)

Utilizator TheSlorrow44Tudose George Stefan TheSlorrow44 Data 21 noiembrie 2017 19:24:28
Problema Text Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.99 kb
#include <iostream>
#include <string>
#include <fstream>

using namespace std;
int NrCuvinte(string x);
int NrLitere(string x);
int main()
{
    string text;
    int a=0,b=0;
    ifstream in("text.in");
    ofstream out("text.out");
    while(in>>text)
    {
        if(NrCuvinte(text)==1)
        {
            b++;
            a+=NrLitere(text);
        }
        if(NrCuvinte(text)==2)
        {
            b+=2;
            a+=NrLitere(text);
        }
    }
    out<<a/b;
    out.close();
    in.close();
    return 0;
}
int NrLitere(string x)
{
    string ver=",.?!-";
    string N,M;
    int a=0,b=0;
    for(int i=0; i<x.length(); i++)
    {
        M=x.at(i);
        for(int j=0; j<ver.length(); j++)
        {
            N=ver.at(j);
            if(M.compare(N)==0){a++;}
        }
        b++;
    }
    return b-a;
}
int NrCuvinte(string x)
{
    string ver="0123456789!@#$%^&*()-=_+|\[]{};':,./<>?`~";
    string ver2=",.?!-";
    int Na=0,b=0,Nn=0;
    string M,N,a,a1,c;
    M=x.at(0);
    N=x.at(x.length()-1);
    for(int i=0; i<x.length(); i++)
    {
        a=x.at(i);
        for(int j=0; j<ver.length(); j++)
        {
           a1=ver.at(j);
           if(M.compare(N)==0 && M.compare(a1)==0 && x.length()==1){return 0;}
           if(a.compare(a1)==0)
           {
               if(a.compare(M)==0 || a.compare(N)==0){
                  for(int m=0; m<ver2.length(); m++)
                    {
                        c=ver2.at(m);
                        if(a1.compare(c)==0){Nn++;}
                    }
                  }
                else
                {
                    if(a.compare("-")){Na++;}
                    else b++;
                }
           }

            }
        }
    Na-=Nn;
    switch(b)
    {
        case 0: if(Na>0){return 0;}
                else return 1;
                break;
        case 1: if(Na>0){return 0;}
                else return 2;
                break;
    }

}