- Codice: Seleziona tutto
void findWord (
std::string aStringToFind,
const std::list<std::string>& aList,
std::list<std::string> &finalList)
Moderatori: cb_123, thrantir, tonertemplum
void findWord (
std::string aStringToFind,
const std::list<std::string>& aList,
std::list<std::string> &finalList)
/***********************************************************************************************/
/* Antisillabah by RaZaL */
/* superviosione Thrantir */
/***********************************************************************************************/
#include <iostream>
#include <list>
#include <fstream>
#include <sstream>
#include <string>
//crea la lista con le parole della lungheza cercata.
void createList(const int aLength, std::list<std::string>& aListLength)
{
for(char myChar = 'a'; myChar < 'z'; ++myChar)
{
std::stringstream myPrefix;
myPrefix << "italiano." << myChar;
std::ifstream myVocabulary(myPrefix.str().c_str());
if(myVocabulary.good())
{
std::string myLine;
while(getline(myVocabulary, myLine))
{
if(aLength == myLine.length())
{
aListLength.push_back(myLine);
}
}
}
}
}
// ricerca nella lista dei termini di lunghezza cercata, le parole che contengono la striga richiesta.
void findWord (std::string aStringToFind,const std::list<std::string>& aListLength, std::list<std::string> &aListFinal)
{
std::list<std::string>::const_iterator myIter;
for(myIter = aListLength.begin(); myIter != aListLength.end(); ++myIter)
{
if(myIter->find(aStringToFind) != myIter->npos)
aListFinal.push_back(*myIter);
}
}
// Inserimento parametri.
void getParam (int &aLength, char aStringToFind[])
{
do
{
std::cout << "inserisci la lunghezza che deve avere la parola: " ;
std::cin >> aLength;
}while(aLength > 21);
do
{
std::cout << "inserisci la sillaba che ricerchi: " ;
std::cin >> aStringToFind;
}while(strlen(aStringToFind)>5);
}
//stampa a schermo dei termini trovati corrispondenti ai parametri.
void stampList (const std::list<std::string> &aListFinal)
{
int myContWord=0;
int myIterIndentazione=1;
std::list<std::string>::const_iterator myIter;
for(myIter = aListFinal.begin(); myIter != aListFinal.end(); ++myIter)
{
if(myIterIndentazione > 3)
myIterIndentazione=1;
if(myIterIndentazione <= 2)
{
std::cout << *myIter << " ";
myIterIndentazione++;
}
if(myIterIndentazione == 3)
{
std::cout << *myIter << "\n" ;
myIterIndentazione++;
}
myContWord++;
}
std::cout << std::endl;
std::cout << "totale parole trovate: " << myContWord ;
}
// main
int main(int argc, char* argv)
{
int aLength=0;
char aStringToFind[] = "aaaaa";
char myMainLoop;
do
{
getParam (aLength, aStringToFind);
std::list<std::string> aListLength;
createList(aLength, aListLength);
std::list<std::string> aListFinal;
findWord (aStringToFind, aListLength, aListFinal);
stampList(aListFinal);
do
{
std::cout << std::endl;
std::cout << "prossima manche ?(s per si, altrimenti n)";
std::cin >> myMainLoop;
}while((myMainLoop != 's') && (myMainLoop != 'n'));
} while(myMainLoop == 's');
}
/*EOF*/
// Inserimento parametri.
void getParam (int &aLength, std::string& aStringToFind)
{
do
{
std::cout << "inserisci la lunghezza che deve avere la parola: " ;
std::cin >> aLength;
}while(aLength > 21);
do
{
std::cout << "inserisci la sillaba che ricerchi: " ;
std::cin >> aStringToFind;
}while(aStringToFind.length()>5);
}
std::string aStringToFind("aaaaa");
//stampa a schermo dei termini trovati corrispondenti ai parametri.
void stampList (const std::list<std::string> &aListFinal)
{
int myContWord=0;
std::list<std::string>::const_iterator myIter;
for(myIter = aListFinal.begin(); myIter != aListFinal.end(); ++myIter)
{
std::cout << *myIter << "\t";
myContWord++;
if((myContWord%3) == 0)
{
std::cout << std::endl;
}
}
std::cout << std::endl;
std::cout << "totale parole trovate: " << myContWord ;
}
if((myContWord%3) == 0)
{
std::cout << std::endl;
}
thrantir ha scritto:
- Codice: Seleziona tutto
if((myContWord%3) == 0)
{
std::cout << std::endl;
}
che vuol dire: "quando myContWord diviso 3 da resto 0, aggiungi un endline"
invece del "\n" metti sempre std::endl, così se per caso un giorno il carattere di accapo cambiasse, non devi cambiare il codice
//stampa a schermo dei termini trovati corrispondenti ai parametri.
void stampList (const std::list<std::string> &aListFinal)
{
final const myLineLengthLimit = 30;
std::string mySeparator(" ");
int myLineLength = 0
int myContWord=0;
std::list<std::string>::const_iterator myIter;
for(myIter = aListFinal.begin(); myIter != aListFinal.end(); ++myIter)
{
myLineLength += *myIter.length() + mySeparator.length();
if(myLineLength > myLineLengthLimit)
{
std::cout << std::endl;
myLineLength = *myIter.length();
}
std::cout << *myIter << mySeparator;
myContWord++;
}
std::cout << std::endl;
std::cout << "totale parole trovate: " << myContWord ;
}
//stampa a schermo dei termini trovati corrispondenti ai parametri.
void stampList (const std::list<std::string> &aListFinal)
{
final const myLineLengthLimit = 30;
std::string mySeparator(" ");
int myLineLength = 0
int myContWord=0;
std::list<std::string>::const_iterator myIter;
for(myIter = aListFinal.begin(); myIter != aListFinal.end(); ++myIter)
{
myLineLength += *myIter.length();
if(myLineLength > myLineLengthLimit)
{
myLineLength = *myIter.length();
std::cout << std::endl;
}
std::cout << *myIter;
myLineLength += mySeparator.length();
if(myLineLength > myLineLengthLimit)
{
myLineLength = *myIter.length();
std::cout << std::endl;
}
else
{
std::cout << mySeparator;
}
myContWord++;
}
std::cout << std::endl;
std::cout << "totale parole trovate: " << myContWord ;
}
final const myLineLengthLimit = 30;
//stampa a schermo dei termini trovati corrispondenti ai parametri.
void stampList (const std::list<std::string> &aListFinal)
{
const int myLineLengthLimit = 30;
std::string mySeparator(" ");
int myLineLength = 0;
int myContWord=0;
std::list<std::string>::const_iterator myIter;
for(myIter = aListFinal.begin(); myIter != aListFinal.end(); ++myIter)
{
myLineLength += myIter->length();
if(myLineLength > myLineLengthLimit)
{
myLineLength = myIter->length();
std::cout << std::endl;
}
std::cout << *myIter;
myLineLength += mySeparator.length();
if(myLineLength > myLineLengthLimit)
{
myLineLength = myIter->length();
std::cout << std::endl;
}
else
{
std::cout << mySeparator;
}
myContWord++;
}
std::cout << std::endl;
std::cout << "totale parole trovate: " << myContWord ;
}
void stampList (const std::list<std::string> &aListFinal)
{
int myFreeSpace = 80;
std::string mySeparator(" ");
int myContWord=0;
std::list<std::string>::const_iterator myIter;
for(myIter = aListFinal.begin(); myIter != aListFinal.end(); ++myIter)
{
std::cout << *myIter;
if(myFreeSpace > mySeparator.length())
std::cout << mySeparator;
myFreeSpace = myFreeSpace - myIter->length() - mySeparator.length();
if(myFreeSpace < myIter->length())
{
std::cout << std::endl;
myFreeSpace=80;
}
myContWord++;
}
std::cout << std::endl;
std::cout << "totale parole trovate: " << myContWord ;
}
Visitano il forum: Nessuno e 0 ospiti