anjua?
sotto linux uso g++, sotto windows puoi usare il mingw, il portitng del gcc, se tiscarichi dev-cpp ti trovi tutto
			Moderatori: cb_123, thrantir, tonertemplum



struct TypeListPoint{
       std::string aWord;
       int aPointValue;       
       };//calcola quanto vale ogni parola e crea una lista con solo le parole che valgono di più
void findPoint (std::list<std::string>& aListFoundWord,std::list<TypeListPoint>& aListFoundPoint )
{
     char nyCaracter;
     std::list<std::string>::const_iterator myIter; 
     for(myIter = aListFoundWord.begin(); myIter != aListFoundWord.end(); ++myIter) 
     {
                aListFoundPoint->aWord->push_back(*myIter);
                aListFoundPoint->aPointValue=0;
                for(i=0;myIter->length();i++)
                {
                      myCaracter=getc(myIter,i);
                      switch(myCaracter)
                      {
                                        case 'a':  aListFoundPoint->aPointValue++;break;
......
                                        case 'z':  aListFoundPoint->aPointValue=aListFoundPoint->aPointValue+4;break;               
                }      
     }
          
     
} aListFoundPoint->aWord->push_back(*myIter); aListFoundPoint.aWord->push_back(*myIter); aListFoundPoint.aWord.push_back(*myIter); aListFoundPoint->aWord.push_back(*myIter);

struct TypeListScore{
       std::string aWord;
       int aScoreValue; 
       void set(std::string,int);  
       };std::list<TypeListPoint>::const_iterator myIterScore; 
myIterScore=aListFoundScore.begin();
myIterScore.push_back(*myIter)->aWord; 
myIterScore->aScoreValue=0; // questo qui credo sia banale no? eppure non mi va. 
//calcola quanto vale ogni parola e crea una lista con solo le parole che valgono di più
void findPoint (std::list<std::string>& aListFoundWord, std::list<TypeListPoint>& aListFoundPoint )
{
     int mySignPoint=0;
     char myChar;
     std::list<std::string>::const_iterator myIterWord; 
     std::list<TypeListPoint>::const_iterator myIterScore;
     myIterScore=aListFoundScore.begin();
     for(myIterWord = aListFoundWord.begin(); myIterWord != aListFoundWord.end(); ++myIterWord) 
     {        
                aListFoundScore.aWord.push_back(*myIterWord);
                for(int i=0; i!=myIterWord->length();i++)
                {
                      std::cout<<myIterWord;
                      switch(myChar)
                      {
                                        case 'a':  mySignPoint++;break;
                                        case 'b':  mySignPoint+=4;break;
                                        case 'c':  mySignPoint+=3;break;
                                        case 'd':  mySignPoint+=3;break;
                                        case 'e':  mySignPoint++;break;
                                        case 'f':  mySignPoint+=4;break;
                                        case 'g':  mySignPoint+=3;break;
                                        case 'h':  mySignPoint+=4;break;
                                        case 'i':  mySignPoint++;break;
                                        case 'j':  mySignPoint+=4;break;
                                        case 'k':  mySignPoint+=4;break;
                                        case 'l':  mySignPoint+=3;break;
                                        case 'm':  mySignPoint+=3;break;
                                        case 'n':  mySignPoint+=2;break;
                                        case 'o':  mySignPoint+=2;break;
                                        case 'p':  mySignPoint+=3;break;
                                        case 'q':  mySignPoint=+4;break;
                                        case 'r':  mySignPoint=+2;break;
                                        case 's':  mySignPoint=+2;break;
                                        case 't':  mySignPoint=+2;break;
                                        case 'u':  mySignPoint=+4;break;
                                        case 'v':  mySignPoint=+3;break;
                                        case 'w':  mySignPoint=+4;break;
                                        case 'x':  mySignPoint=+4;break;
                                        case 'y':  mySignPoint=+4;break;
                                        case 'z':  mySignPoint=+4;break;               
                                        } 
                //myIterPoint->set(,mySingPoint));     
                }
   }
}
`knives` ha scritto:
- Codice: Seleziona tutto
 struct TypeListScore{
std::string aWord;
int aScoreValue;
void set(std::string,int);
};
`knives` ha scritto:
- Codice: Seleziona tutto
 std::list<TypeListPoint>::const_iterator myIterScore;
myIterScore=aListFoundScore.begin();
myIterScore.push_back(*myIter)->aWord;
myIterScore->aScoreValue=0; // questo qui credo sia banale no? eppure non mi va.

1) scandire la lista in ingresso e salvarsi un termine alla volta 
2) per ogni lettera del termine letto sommare il punteggio
3) salvare il termine e il punteggio ottenuto in una nuova lista di tipo <TypeScoreList> che contiene la parola e il suo valore.
4) passare alla successia.




class RatedString
{
public:
    RatedString(const std::string& aString = "",
                int aRate = 0)
        :theString(aString)
        ,theRate(aRate)
    {}
    ~RatedString(){}
    const std::string& getString()
    {
        return theString;
    }
    int getRate()
    {
        return theRate;
    }
private:
    std::string theString;
    int theRate;
};
int calculateStringValue(const std::string& aString)
{
    int myResult = 0;
    std::string myOnePoint("aei");
    std::string myTwoPoints("norst");
    std::string myThreePoints("cdglmpv");
    std::string myFourPoints("bfhjkquwxyz");
    for(unsigned int myIndex = 0;
        myIndex < aString.length();
        ++myIndex)
    {
        if(myOnePoint.find(aString[myIndex]) != aString.npos)
        {
            ++myResult;
        }
        else if(myTwoPoints.find(aString[myIndex]) != aString.npos)
        {
            myResult += 2;
        }
        else if(myThreePoints.find(aString[myIndex]) != aString.npos)
        {
            myResult += 3;
        }
        else if(myFourPoints.find(aString[myIndex]) != aString.npos)
        {
            myResult += 4;
        }
    }
    return myResult;
}
void calculateRate(const std::list<std::string>& aStringList,
                   std::list<RatedString>& aRatedStringList)
{
    std::list<std::string>::const_iterator myIter;
    for(myIter = aStringList.begin();
        myIter != aStringList.end();
        ++myIter)
    {
        int myRate = 0;
        aRatedStringList.push_back(RatedString(*myIter, calculateStringValue(*myIter)));
    }
}
Visitano il forum: Nessuno e 0 ospiti