ricerca di una parola..

Discuti dei problemi relativi alla programmazione nel tuo linguaggio preferito!

Moderatori: cb_123, thrantir, tonertemplum

Messaggiodi thrantir il 06 giu 2006, 18:19

mea culpa, il metodo e' push_back() e non push()

il vc++ 6 dovrebbe darti l'autocompletamento...
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

 

Messaggiodi `knives` il 06 giu 2006, 18:21

si questo lo avevo risolto,non riesco a fargli aprire i file.
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi thrantir il 06 giu 2006, 20:16

ora che ho un attimo vedo di buttarlo giù :wink:
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi thrantir il 06 giu 2006, 20:33

Codice: Seleziona tutto
#include <list>
#include <fstream>
#include <sstream>
#include <iostream>
   
void getWords(int aLength, std::list<std::string>& aList)
{
    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())
                {
                   aList.push_back(myLine);
                }
            }
        }
    }
}
   
int main(int argc, char* argv)
{
    for(int myIndex = 1; myIndex <= 4; ++myIndex)
    {
        std::list<std::string> myList;
        getWords(myIndex, myList);
        std::list<std::string>::const_iterator myIter;
        for(myIter = myList.begin(); myIter != myList.end(); ++myIter)
        {
            std::cout << *myIter << " ";
        }
        std::cout << std::endl;
    }
}


ecco il programma
i miei files sono italiano.a che contiene "a" "aa" "aaa" e "aaaa" e italiano.b che contiene "b" "bb" "bbb" e "bbbb"

l'output è

a b
aa bb
aaa bbb
aaaa bbbb
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi `knives` il 06 giu 2006, 20:36

Codice: Seleziona tutto
std::stringstream myPrefix;
        myPrefix << "italiano." << myChar;
        std::ifstream myVocabulary(myPrefix.str().c_str());
        if(myVocabulary.good())


ecco come bisognava scrivere.. ci ho passato un po di tempo tra varie ricerche ma non ci sono riuscito.
non riusciva a passare l'if con myVocabulary.good, dava sempre 0 e quindi usciva senza dare niente.


grazie...

cmq questa è gia programmazione avanzata con l'uso di std:: e robe cosi o no?
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi thrantir il 06 giu 2006, 20:38

uhm, no, è un uso base delle stl, poi ci sono funzioni incomprensibili che ti vanno venire un misto di mal di testa e rabbia :lol:

se stai imparando il c++, potremmo tirare su un minicorso :D
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi `knives` il 06 giu 2006, 20:43

per me va bene..
ovvio una cosa senza impegno, con costanza si ma non un lavoro.. pero si puo imbastire un buon discorso.
magari inziamo con le basi di programmazione sotto linux dove ne so veramente poco pure con il C.
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi thrantir il 06 giu 2006, 21:05

beh, se programmi in ANSI C, cioè in C standard, non c'è nesuna differenza, i problemi vengon fuori se devi fre chiamate di sistema, quindi uscire dallo standard per diventare platform dependent

intanto ci si può pensare un po su

si potrebbe fare un corso in modo interattivo, in cui nn ci sono vere e proprie lezioni ma degli argomenti che vengono sviluppati con domande da parte di ch8i è interessato

certo ci vogliono un po di studenti volenterosi :D
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi `knives` il 06 giu 2006, 23:07

beh se vogliamo approfondire questo discorso sulla stl uno studente lo hai trovato :wink:
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi `knives` il 07 giu 2006, 15:47

Codice: Seleziona tutto
#include <iostream>
#include <list>
#include <fstream>
#include <sstream>     

void createList(int aLength, std::list<std::string>& aList)
{
    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())
                {
                   aList.push_back(myLine);
                }
            }
        }
    }
}
void findWord (char )
{


}
void getParam (int &aLength, char &str[])
{
     std::cout << "inserisci la lunghezza che deve avere la parola: " ;
     std::cin >> aLength;
     std::cout << "inserisci la sillaba che ricerchi: " ;
     std::cin >> str;
}

void stampList (std::list<std::string> &aList)
{
     std::list<std::string>::const_iterator myIter;
     for(myIter = aList.begin(); myIter != aList.end(); ++myIter)
          {
             std::cout << *myIter << "\n";
          }
    std::cout << std::endl;
}
int main(int argc, char* argv)
{
    int aLength,prossimo;
    bool risp = true;
    char str[]="aaaaa";
    while(risp == true)
     {     
           getParam (aLength,str);
          // std::cin >> aLength;
           std::list<std::string> aList;
           createList(aLength, aList);
           stampList(aList);
           std::cout << "prossimo?";
           std::cin >> prossimo;
           if(prossimo != 1)
                       risp = false;
   }
}


ma nel passaggio degli indirizzi
Codice: Seleziona tutto
getParam (aLength,str);
a
Codice: Seleziona tutto
void getParam (int &aLength, char &str[])


dovè che sbaglio, mi dice che do troppi pochi parametri alla funzione
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi `knives` il 07 giu 2006, 16:52

Codice: Seleziona tutto
void findWord (char str[], std::list<std::string>& aList, std::list<std::string> &finalList)
{char *pnt;
     std::list<std::string>::const_iterator myIter;
     for(myIter = aList.begin(); myIter != aList.end(); ++myIter)
          {
          pnt = strstr(*myIter,str)
             if(pnt != 1)
                  finalList.push_back(*myIter);                   
          }
    std::cout << std::endl;

}


ora devo cercare la sottostringa all'interno della lista che abbiamo creato prima..
myIter che cosa è?
è il puntatore alla posizione nella lista di parole creato prima esatto?
quindi io come faccio a leggere quella posizione e salvarmela da qualche parte?
a si.. faccio un strcpy dalla parola puntata ad una stringa di buffer locale.. e faccio la ricerca.. ok proviamo cosi

ps. muhaha bello ragionare per iscritto :lol:
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi thrantir il 07 giu 2006, 17:38

fermi tutti, ragioniamo a oggetti

intanto al posto di "char str[]" ci metti un bel std::string

poi, per scoprire se una stringa a contiene una sottostringa b fai

a.find(b);

se a contiene b, il risultato di questa funzione sara' diverso da a.npos

quindi

Codice: Seleziona tutto
void findWord (std::string aStringToFind, std::list<std::string>& aList, std::list<std::string> &finalList)
{
     std::list<std::string>::const_iterator myIter;
     for(myIter = aList.begin(); myIter != aList.end(); ++myIter)
     {
          if(myIter->find(aStringToFind) != myIter->npos)
          finalList.push_back(*myIter);                   
     }
     std::cout << std::endl;

}
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi thrantir il 07 giu 2006, 17:38

ah, siccome "aList" non lo modifichi mai, dichiaralo const
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi `knives` il 07 giu 2006, 17:44

nel main?
vogliadidolci.wordpress.com
Avatar utente
`knives`
Moderatore
Moderatore
 
Messaggi: 6246
Iscritto il: 24 mar 2005, 01:57

Messaggiodi thrantir il 07 giu 2006, 17:49

alcuni suggerimenti per migliorare la leggibilita':

- i nomi delle variabili devono essere indicativi, cosi' e' subito chiaro che cosa debbano contenere. Se il nome della variabile e' formato da piu' parole, tutte, a parte la prima, iniziano con la maiuscola

- i parametri formali delle funzioni iniziano sempre con l'articolo indeterminativo, le variabili locali ad una funzione con il possessiovo, e quelle globali o attributi di una classe con l'articolo determinativo. Come hai visto, io le scrivo tutte in inglese, quindi uso rispettivamente a (o an), my e the
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

 
PrecedenteProssimo

Torna a Programmare

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron