DOMANDA Stringhe C++

Stato
Discussione chiusa ad ulteriori risposte.

MPG

Utente Attivo
544
4
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]
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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?
 
  • Mi piace
Reazioni: _Achille

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
Come non avessi detto nulla...
 

MPG

Utente Attivo
544
4
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....
Post unito automaticamente:

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:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Allora facciamo così: devi verificare che ciascun carattere nella stringa 1 sia uguale nella stringa 2.
Come fai a sapere se sono uguali?
Post unito automaticamente:

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.
 

MPG

Utente Attivo
544
4
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'?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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)...
 

MPG

Utente Attivo
544
4
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:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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.
 

MPG

Utente Attivo
544
4
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.
 

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
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
 

MPG

Utente Attivo
544
4
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.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili