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 1 ospite