Aiuto esercizio c++

di il
6 risposte

Aiuto esercizio c++

Salve .... devo scrivere un programma che letta da input una stringa ed un elenco di parole elimina via via i caratteri dell elenco di parole che compaiono nella frase... esempio:
se io metto la frase:"importante ridurre il debito" e l elnco : {dame,rudi}...alla prima iterazione la frase dovrebbe diventare "iportnt riurre il debito" perche il programma prende la parola "dame" e scorre la stringa eliminando la prima ricorrenza della "d" e poi passa alla "a" ed elimina la prima ricorrenza di "a" che incontra nella frase e poi passa alla "m" e cosi via...
ora io ho pensato di dichiarami un array di stringhe che contiene l elenco di parole e poi mi dichiaro u puntatore che punta al primo carattere della prima parola dell elenco e scorrere via via la stringa eliminando le occorrenze e al tempo stesso aumentando il puntatore...ma sbaglio qualcosa e non capisco cosa...


int main()
{
    char frase[100];
    int k=0;
    int j=0;
    cout<<"inserisci una frase :"<<endl;
    cin.getline(frase,100);

    char *elenco[]={"dame","rudi"};//,"tinte","birre","il"};
    char *p=*elenco;

    for(int x=0;x<strlen(frase);x++)
    {
         for(int y=0;y<strlen(frase);y++)
        {
          if(frase[x]== *(p+k))
          {
              frase[x]=' ';
              k++;
              break;
          }
        }
    }

6 Risposte

  • Re: Aiuto esercizio c++

    Deve eliminare solo prima ricorrenza della lettera? Perché non hai eliminato la d di debito?

    Non avevi già aperto una discussione su questo argomento?
  • Re: Aiuto esercizio c++

    oregon ha scritto:


    Deve eliminare solo prima ricorrenza della lettera? Perché non hai eliminato la d di debito?

    Non avevi già aperto una discussione su questo argomento?
    si era un esercizio simile...in questo devo eliminare solo la prima ricorrenza e dopo averla trovata passa alla seconda lettera di "dame"... ovvero la 'a'....per questo debito rimane intatto
  • Re: Aiuto esercizio c++

    Perchè non scrivi una funzione che ricevuti in input la stringa A e la stringa B si passa tutta la stringa A per "eliminarne" B.
    Poi questa la funzione la richiami tante volte, con un ciclo, quante sono le stringhe dell'elenco.
  • Re: Aiuto esercizio c++

    candaluar ha scritto:


    Perchè non scrivi una funzione che ricevuti in input la stringa A e la stringa B si passa tutta la stringa A per "eliminarne" B.
    Poi questa la funzione la richiami tante volte, con un ciclo, quante sono le stringhe dell'elenco.
    mmmmm si ottima idea grazie....ora provo....comq se non ti secchi puoi dare un occhiata al ragionamento che ho scritto io e vedere come mai non funziona???
  • Re: Aiuto esercizio c++

    puoi dare un occhiata al ragionamento che ho scritto io e vedere come mai non funziona???
    Non può funzionare, basta che lo leggi. Quello che hai scritto non ha alcun senso, confessa è solo un tentativo di risolvere l'esercizio con la magia!
        for(int x=0;x<strlen(frase);x++)
        {
             for(int y=0;y<strlen(frase);y++)
    Che senso ha fare due for, con x e y, sulla stessa stringa (frase) e poi tra l'altro neanche usi y...
  • Re: Aiuto esercizio c++

    Il ragionamento da cui devi partire è che

    a) le lettere delle varie parole vanno esaminate tutte una dopo l'altra ma una sola volta

    b) le lettere della frase tutte ma tante volte quante sono le lettere delle varie parole
Devi accedere o registrarti per scrivere nel forum
6 risposte