Visualizzazione dei risultati da 1 a 8 su 8

Discussione: c++ Stringhe

  1. #1

    c++ Stringhe

    Salve,

    da poco ho iniziato a studiare le stringhe in c++ ,ma ad un certo punto mi sono perso.

    Mi è stato assegnato un compito dove mi chiedeva : Date due stringhe s1 ed s2 di lunghezza qualsiasi,scrivere una funzione in c++ che verifichi se s2 è una sottostringa di s1 (cioè se s2 è contenuta in s1),restituendo il valore intero -1 se non lo è, oppure un valore positivo che indichi la posizione di inizio della corrispondenza tra gli elementi di s2 e s1.

    Partendo dalle basi delle stringhe sono riuscito a capire come dichiarare una variabile di tipo string,come inizializzare una stringa e assegnare un valore alla variabile di tipo string o
    sommare due stringhe di partenza per formare un'unica stringa come risultato esempio :
    codice:
    
    string stringaIniziale1 = "mi presento, ";
    string stringaIniziale2 = "mi chiamo Pietro";
    
    string stringaFinale = stringaIniziale1 + stringaIniziale2;
    
    cout << stringaFinale;

    Non riesco a capire come verificare se questa stringa è contenuta dentro l altra... qualcuno può darmi una mano?

    consultando diverse guide avevo fatto una cosa di questo tipo:
    codice:
    #include <string>
    #include <iostream>
    
    using namespace std ;
    
    int main()
    {
    
    string s1, s2; //dichiaro 2 oggetti stringa s1 e s2
    
    string s1 = "Ti Saluto" ;
    string s2 = s1 ;
    s1 = 'c';   //assegnamento del carattere c alla stringa s1
    s1 = "Ciao Ti Saluto" ;
    
    if(s2 != s1)
    {
    int c = a.find(b,0);
    
    c==string:npos ; //il contenuto di s2 non si trova in s1
    
    cout << "Non trovato" ;
    
    return 0;
    }
    
    if(s2==s1)
    {
    
    int c=a.find(b,0);
    
    cout<< c;
    
    return 0;
    
    }
    Ma non funge..

    Ho deciso di rivolgermi a questo forum perchè lo reputo uno dei migliori...

    Vi saluto e spero in qualche risposta

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Scusa ma quel codice non è neanche compilabile ... ci sono linee dopo il main e le linee all'interno del main non hanno senso, dal punto di vista della sequenza logica ... che volevi scrivere?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da LastonixTM Visualizza il messaggio


    Date due stringhe s1 ed s2 di lunghezza qualsiasi,scrivere una funzione in c++ che verifichi se s2 è una sottostringa di s1 (cioè se s2 è contenuta in s1),restituendo il valore intero -1 se non lo è, oppure un valore positivo che indichi la posizione di inizio della corrispondenza tra gli elementi di s2 e s1.


    è questo quello che sto cercando di fare...voglio controllare se una stringa è contenuta dentro un altra , ma non riesco a farlo :/

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Questo l'ho capito ma non puoi proporre codice a caso che non può essere neanche compilato.

    Se hai due stringhe, s1 e s2, cerca la s2 dentro la s1 con

    int risultato = s1.find(s2);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    oddio che stupido, ho confuso la funzione string con il char per le stringhe il c++ .... scusatemi ma sto cercando di imparare

  6. #6
    Sono riuscito a fare questo:
    codice:
    #include <stdio.h>
    #include <string.h>
    
    bool trova(char *s1, char *s2)
    {
       char *pos = strstr(s1,s2);
       bool ret = false;
       pos = s1;
       do
       {
          pos = strstr(pos,s2);
          if(pos!= NULL)
          {
             if(strlen(pos) == strlen(s2))
             {
                ret = true;
                break;
             }
             else
             {
                pos++;
             }
          }
       }while(pos != NULL);
       return ret;
    }
    int main()
    {
       char *parole[3]={"Giulio","Ilyas","Pino"};
       
       int i;
       for(i = 0; i < 3; i++)
       {
          if(trova(parole[i],"yas"))
             printf("%s",parole[i]);
       }
       return 0;
    }
    Però non riesco a farmi restituire il valore intero -1 se non è una sottostringa ,oppure un valore positivo che indichi la posizione di inizio della corrispondenza tra gli elementi di s2 e s1.

    questo codice non soddisfa a pieno quello che è scritto nella consegna.
    Qualcuno potrebbe darmi una mano?
    Ultima modifica di LastonixTM; 16-02-2014 a 18:51

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ma quindi non devi scrivere in C++ e non devi usare le stringhe di C++. Parliamo di C ... ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    nono al contrario devo scrivere in c++... avevo usato la funzione string ma non va bene... mi hanno detto di lavorare con i puntatori, il char, bool ecc..

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 © 2024 vBulletin Solutions, Inc. All rights reserved.