Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [C++]stringhe

    cosa cè che non va?(tante cose lo so siate buoni..)


    #include<iostream>
    using namespace std;

    int main()
    {
    char s1[]="abcdefgh";
    char s2[]="ilmnohcder";
    int indice=0;
    bool occorrenza=false;

    while(!occorrenza)
    {
    for(int i=0;i!='\0';i++)
    {
    while(!occorrenza)
    {
    for(int j=0;j!='\0';j++)
    {
    if(s1[i]==s2[j])
    {
    occorrenza=true;
    indice=i;}
    }
    }
    }
    }

    if(occorrenza!=true)
    cout<<"non ci sono occorrenze"<<endl;
    else
    cout<<"la posizione della prima occorrenza di s2 in s1 e': "<<indice<<endl;
    system("pause");
    }


    grazie!!

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772

    Re: [C++]stringhe

    Originariamente inviato da paranoid85
    cosa cè che non va?
    c'è che nn usi la STL...
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    purtroppo l'esercizio è questo..
    nn so bene o male cosa cè ke nn va

  4. #4
    Puoi anche dirci cosa dovrebbe fare?
    Cercare se s1 è contenuta in s2?

  5. #5
    il testo dell'esercizio è:"scrivere un programma che date due stringhe di caratteri s1 e s2 restituisce la posizione del primo carattere della prima occorrenza di s2 in s1"

  6. #6
    qualcuno m sa dire cosa cè ke nn va?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Guarda, nel tuo codice ci ho visto parecchi errori. Così è come l'avrei fatto io:
    codice:
    int FindStr(char *s1, char *s2)
    {
        for(int i = 0; s1[i] != '\0'; i++)
        {
            if (s1[i] == s2[0])
            {
                bool ok = true;
                for(int j = 1; s2[j] != '\0'; j++)
                {
                    if (s1[i + j] != s2[j])
                    {
                        ok = false;
                        break;
                    }
                }
                if (ok) return i;
            }
        }
        return -1;
    }

  8. #8
    scusa se t disturbo ma almeno csi m rendo conto.. m potresti dire gli errori ke c sono?grazie!

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Ci sono diversi errori, sia di sintassi che di logica. Vediamo:
    codice:
    int main() 
    { 
        char s1[]="abcdefgh"; 
        char s2[]="ilmnohcder"; 
        int indice=0; 
        bool occorrenza=false; 
    
        while(!occorrenza) //Logica: cosa fai se non trovi occorrenze ? Vai in loop !
        { 
            for(int i=0;s1[i]!='\0';i++) //Sintassi. E' s1[i], non i. 
            { 
                while(!occorrenza)  //Logica: cosa fai se non ti viene data occorrenza = true al primo ciclo ? Vai in loop !
                {
                    for(int j=0;s2[j]!='\0';j++) //Sintassi. E' E' s1[j], non j 
                    { 
                        if(s1[i]==s2[j]) 
                        { 
                            occorrenza=true; 
                            indice=i;
                        } 
                        /*Logica. Il codice che hai messo qui praticamente fa questo:
                          confronta carattere dopo carattere TUTTA la stringa s2 con il singolo carattere
                          della stringa s1. Io non intendo questo con trovare occorrenze di s2 in s1, ma
                          di solito intendo trovare l'intera stringa s2 in s1. Per fare questo dovresti fare
                          una cosa del tutto diversa.*/
                    } 
                } 
            } 
        } 
    
        if(occorrenza!=true) 
        cout<<"non ci sono occorrenze"<<endl; 
        else 
        cout<<"la posizione della prima occorrenza di s2 in s1 e': "<<indice<<endl; 
        system("pause"); 
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Includo una versione modificata:
    codice:
    #include<iostream> 
    using namespace std; 
    
    int main() 
    { 
        char s1[]="abcdefgh"; 
        char s2[]="def"; 
        int indice=0; 
        bool occorrenza=false; 
        
        for(int i=0;s1[i]!='\0';i++)
            if(!occorrenza) 
            {
                occorrenza = true;
                indice = i;
                for(int j=0;s2[j]!='\0';j++)
                    if(s1[i + j]!=s2[j]) 
                        occorrenza=false; 
            }  
    
        if(occorrenza!=true) 
        cout<<"non ci sono occorrenze"<<endl; 
        else 
        cout<<"la posizione della prima occorrenza di s2 in s1 e': "<<indice<<endl; 
        system("pause"); 
    }

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.