Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    9

    Algoritmo C++ sulla concatenazione di due stringhe

    Potete aiutarmi?
    Inserire nella stringa st1 dopo ogni occorrenza della stringa st2 la stringa st3, e restituire il valore di inserimenti effettuati
    ESEMPIO:
    st1:non ricordo il nome di quel ragazzo
    st2:no
    st3: pippo
    Risultato
    nopippon ricordo il nopippome di quel ragazzo
    valore restituito:2

    ci ho provato per giorni ma non ci sono riuscito
    Scusate per eventuali errori gravi dopo milioni di tentativi ho provato con cose insensate
    codice:
    #include <cstdlib>
    #include <iostream>
    #include <cstring>
    #include <string>
    using namespace std;
    int concatena(char st1[],char st2[],char st3[],int N,int S,int P)
    {
    
    
        if(N==0)
            return 0;
        else if(S==0)
            return 0;
        else if(st1[N]==st2[S])
            return 1+concatena(strcat(st1,st3),st2,strlen(st1),strlen(st2),strlen(st3));
        else
            return concatena(st1,st2,st3,strlen(st1),strlen(st2),strlen(st3));
    }
    int main(int argc, char *argv[])
    {
        char st1[100];
        char st2[100];
        char st3[100];
    
    
        cin.getline(st1,100);
        cin.getline(st2,100);
        cin.getline(st3,100);
        cout<<concatena(st1,st2,st3,strlen(st1),strlen(st2),strlen(st3));
    
    
        cout<<st1;
        system("PAUSE");
        cout << "Press the enter key to continue ...";
        cin.get();
        return EXIT_SUCCESS;
    }
    Ultima modifica di MItaly; 30-11-2015 a 02:47 Motivo: Tag CODE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Perché nell'esempio restituisci 4 ?

    Se usi C++ perché non utilizzi le string ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    9
    Scusa ho sbagliato a fare l'esempio ho corretto.L'ho detto ho modificato milioni di cose, non riesco a capire come usare le funzioni delle stringhe.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma quindi è in C++ e puoi usare cin, cout e la classe string oppure no?

    E poi, deve essere un algoritmo ricorsivo necessariamente?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    9
    Si posso usare cin,cout e la classe string e deve essere ricorsivo.Non lo so forse mi sto perdendo in un bicchiere d'acqua però sto da un bel po a ragionarci

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    9
    Sono riuscito a migliorare qualcosa, adesso il problema è che tutte le parole che servono le mette alla fine
    ESEMPIO
    st1: Ciao pippo
    st2: o
    st3: crudo
    risultato: ciao pippocrudocrudo
    valore restituito: 2


    #include <cstdlib>
    #include <iostream>
    #include <cstring>
    #include <string>
    using namespace std;


    int concatena(char st1[],char st2[],char st3[],int N,int S,int P)
    {


    if(N==0)
    return NULL;
    else
    if(S==0)
    return NULL;
    else
    cout<<"PASSO";
    if(st1[N-1]==st2[S-1])

    {
    strcat(st1,st3);

    return 1+concatena(st1,st2,st3,N-1,strlen(st2),strlen(st3));
    }
    else
    return concatena(st1,st2,st3,N-1,strlen(st2),strlen(st3));
    }
    int main(int argc, char *argv[])
    {
    char st1[100];
    char st2[100];
    char st3[100];



    cin.getline(st1,100);
    cin.getline(st2,100);
    cin.getline(st3,100);
    cout<<"VALORE RESTITUITO:";
    cout<<concatena(st1,st2,st3,strlen(st1),strlen(st2 ),strlen(st3))<<endl;
    cout<<"RISULTATO FINALE"<<endl;
    cout<<st1<<endl;
    system("PAUSE");
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
    }

  7. #7
    Ma non puoi usare la funzione strcat(stringa1, stringa2); concatena la stringa 2 al termine della stringa 1 poi usi la stessa funzione strcat(stringa1, stringa3). Trovi questa funzione nel file string.h o cstring

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    9
    Non esiste una funzione come strcat però usando degli indici?

  9. #9
    Esiste strncat (s1,s2,n) e ti concatena al massimo n caratteri. Se nessuno scrive nulla stasera scrivo io del codice e vedo se funziona.

    tipo potresti fare
    codice:
     strncat(s4,s1,n);
    strncat(s4,s2,n);
    strncat(s4,s3,n);
    cioè fai concatenare nella quarta stringa n caratteri che puoi far chiedere all'utente con cin.
    Ultima modifica di giuseppe96; 04-12-2015 a 10:13

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    9
    Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.