DOMANDA Stringhe C++

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
Fatto cosi' ma niente:

Codice:
#include <iostream>
#include <string>
#include <ctime>
#include <cmath>
#include <cstdlib>

using namespace std;

bool stringaequal (string a, string b)
{

    int dim=a.length();
    int dim1=b.length();
    if (dim==dim1)


    for (int i=0; i<dim; i++)
                 {
                    if(a[i]==b[i])
                       {
                        return true;
                       }
                       else
                          {
                         return false;
                           }
                   }
}
int main ()
{

    string a;
    string b;
    cin>> a;
    cin>> b;
    cout << stringaequal (a, b);

    return 0;
}

[\code]
 
Non sta in piedi proprio da un punto di vista logico, prima ancora che informatico.

In primis devi restituire false se non hanno stessa lunghezza.
Ma se devi verificare che le stringhe siano uguali... perché ti fermi al primo carattere?
 
Scusatemi io cerco di ascoltare non esagerate contro di me , se a volte mi date indicazioni ma non riesco a recepirle non prendetevela, se chiedo aiuto ci saraà un motivo, mi sforzo di fare i codici poi dove non ci arrivo non ci arrivo, non ho il "lampo" perdonatemi ...
Io quello del bool non riesco a compilarlo giusto ma abbattetimi ancora di piu' , non migliora cosi' le mia autostima in questa materia....
--- i due messaggi sono stati uniti ---
Avevo iniziato altro codice e cosi' va:

Codice:
bool stringequal(string a,string b)
{
  int q=a.length();
  int w=b.length();
  if(q==w)
  {
    for(int i=0;i<q;i++)
    {
        if(a[i]!=b[i])
        {
           cout<<"falsa"<<endl;
           return false;
           return 0;
        }
    }
  cout<<"vera"<<endl;
  return true;

  }
  else
  {
      cout<<"falsa"<<endl;
    return false;
  }
}
int main()
{
    string a;
    string b;
    cin>>a;
    cin>>b;
    stringequal(a,b);
}
[\code]
 
Ultima modifica:
Allora facciamo così: devi verificare che ciascun carattere nella stringa 1 sia uguale nella stringa 2.
Come fai a sapere se sono uguali?
--- i due messaggi sono stati uniti ---
Non stampare direttamente il messaggio in questa funzione, lascialo fare al chiamante.

Anche nel nuovo codice, stesso discorso: come fai a dire che tutti i caratteri sono uguali se non controlli tutta la stringa?

EDIT: ho visto ora il diverso da. Così è corretto.
 
Ma nemmeno cosi' va bene??
La domanda è"due stringhe come parametri e restituisce true se sono uguali, false altrimenti"
Ora se io scrivo esempio lucio e poi lucia mi da falso, non è corretto cosi'?
 
Si, non riuscivo a starti dietro nelle risposte (sono da smartphone, ho visto in ritardo l'edit).

È corretto perché restituisci falso non appena non corrispondono.

Vale però il resto, il non stampare stringhe direttamente. Questo perché la funzione ha un compito, e sta poi al chiamante scegliere come trattare il risultato.
 
Togliere i cout dalla funzione, è sufficiente il risultato. Il chiamante poi restituisce un messaggio (o solo true/false, in base a ciò che devi fare)...
 
Togliere i cout dalla funzione, è sufficiente il risultato. Il chiamante poi restituisce un messaggio (o solo true/false, in base a ciò che devi fare)...
Li ho tolti ma allora non viene nulla.... dovrei avere tipo 0 o 1 ma niente.... dovrebbe appunto restituire true o false....
 
Ultima modifica:
Per forza, non utilizzi il risultato che viene restituito dalla funzione (non memorizzi e non stampi)...

Sono le basi comunque. Se non ti sono chiare queste cose, ti consiglio di tornarci su, studiale e prova a capirle (poi se hai domande siamo qui). Proseguire affrontando altri argomenti sarà via via sempre più complesso se non impossibile, con questi strumenti.
 
Ti chiedo un a cortesia mi sistemi il codice di questo esercizio togliendo i cout e poi riguardero' tutto con calma (ho 4 verifiche in questa settimana, non ho solo informatica da studiare). Sono veramente fuso sono in casa da ieri a studiare. Ti ringrazio.
 
Ti chiedo un a cortesia mi sistemi il codice di questo esercizio togliendo i cout e poi riguardero' tutto con calma (ho 4 verifiche in questa settimana, non ho solo informatica da studiare). Sono veramente fuso sono in casa da ieri a studiare. Ti ringrazio.
Basta che togli tu i cout, non c’è tanto da fare.
Poi nel main la chiami per vedere se sono uguali e se lo sono scrivi uguali o vero altrimenti diverse o falso, ma nel main
 
In pratica devo fare cosi' nel main e mi viene giustamente 0 o 1, ma affinchè ci sia scritta la parola "vero" o "falso" non dovrei lasciare i due cout
cout<<"falsa"<<endl
cout<<"vera"<<endl;
dove erano altrimenti nel main come imposto per trovare scritto vero o falso?


Codice:
cout<< stringequal(a,b);
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top