[C++] Aiuto per stringhe

Messaggioda mpg » 14/02/2019, 08:05

Scusate abbiamo introdotto le stringhe molto velocemente e per casa avrei questi 4 esercizi. QUalcuno mi puo' aiutare? non ho ben capito le stringhe e non sono un fulmine in informatica..... veramente sono in difficoltà .Grazie a tutti.

a)Prende una stringa come parametro e scambia la prima metà con la seconda;
b)Riceve due stringhe come parametri e restituisce true se sono uguali, false altrimenti;
c)Riceve una stringa come parametro e, se essa ha lunghezza >=2, scambia il primo carattere con l'ultimo e stampa la stringa, altrimenti non fa nulla;
d)Prende come parametro una stringa ed un carattere e restituisce il numero di occorrenze del carattere nella stringa.
mpg
Junior Member
Junior Member
 
Messaggio: 221 di 224
Iscritto il: 28/11/2017, 09:35

Re: [C++] Aiuto per stringhe

Messaggioda apatriarca » 14/02/2019, 11:47

Con stringhe intendi array di char che terminano con '\0'? Il C++ supporta anche un altro tipo di stringhe per cui sarebbe utile sapere che cosa c'è nel programma.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5190 di 5196
Iscritto il: 08/12/2008, 20:37
Località: Londra

Re: [C++] Aiuto per stringhe

Messaggioda mpg » 14/02/2019, 12:40

apatriarca ha scritto:Con stringhe intendi array di char che terminano con '\0'? Il C++ supporta anche un altro tipo di stringhe per cui sarebbe utile sapere che cosa c'è nel programma.


Ho letto le poche pagine della dispensa con la definizione di una stringa che è una sequenza di caratteri, come "Hello" e la spiegazioneche in C++ le stringhe sono racchiuse tra virgolette doppie, che non sono considerate parte della stringa.
Poi l'istruzione getline(cin, nome) che legge tutti i caratteri digitati fino a che si preme INVIO e genera una stringa che contiene tutti i caratteri e che viene memorizzata nella variabile nome.
Poi un facsimile di programma tipo questo sotto.. IO pero' non riesco a fare queste esercizi dettati (non erano stati presi dal libretto) con queste nozioni.. Comunque non vedo '\0 .
Tu scusa come imposteresti gli esercizi??

1 #include <iostream>
2 #include <string>
3 using namespace std;
4
5 //INIZIO
6 int main ()
7 {
8 //definisci una variabile stringa
9 string nome;
10
11 //chiedi e leggi il nome
12 cout << "\nInserisci il tuo nome => ";
13 cin >> nome;
14
15 //scrivi il contenuto della variabile nome
16 cout << "\nla variabile nome contiene " << nome;
17
18 //fine programma
19 cout << "\n\nFine ";
20 system ("pause");
21 return 0;
mpg
Junior Member
Junior Member
 
Messaggio: 222 di 224
Iscritto il: 28/11/2017, 09:35

Re: [C++] Aiuto per stringhe

Messaggioda Albesa81 » 14/02/2019, 14:25

mpg ha scritto:Comunque non vedo '\0 .

Ovviamente '\0' non è un carattere visibile della stringa ma un carattere speciale usato dal compilatore per delimitare la stringa in memoria.
\[-\sum_{n=1}^{N-1} \cos \left({2 \pi n \over N} \right) = 1\]
Albesa81
Junior Member
Junior Member
 
Messaggio: 143 di 143
Iscritto il: 21/12/2010, 12:02

Re: [C++] Aiuto per stringhe

Messaggioda apatriarca » 15/02/2019, 11:57

@mpg Quindi utilizzi std::string.. In linea di massima hai qualcosa come il seguente.
Codice:
// b)Riceve due stringhe come parametri e restituisce true se sono uguali, false altrimenti;
bool string_equal(const std::string &s0, const std::string &s1)
{
    // Due stringhe di lunghezza diversa non possono essere uguali..
    if (s0.size() != s1.size()) { return false; }

    // Confronta ogni carattere, se sono diversi restituisce false
    for (int i = 0; i < s0.size(); ++i) {
        if (s0[i] != s1[i]) { return false; }
    }

    // Le stringhe hanno uguale lunghezza e i loro caratteri sono tutti uguali..
    return true;
}


Dove incontri difficoltà?
apatriarca
Moderatore
Moderatore
 
Messaggio: 5193 di 5196
Iscritto il: 08/12/2008, 20:37
Località: Londra

Re: [C++] Aiuto per stringhe

Messaggioda mpg » 16/02/2019, 08:47

apatriarca ha scritto:@mpg Quindi utilizzi std::string.. In linea di massima hai qualcosa come il seguente.
Codice:
// b)Riceve due stringhe come parametri e restituisce true se sono uguali, false altrimenti;
bool string_equal(const std::string &s0, const std::string &s1)
{
    // Due stringhe di lunghezza diversa non possono essere uguali..
    if (s0.size() != s1.size()) { return false; }

    // Confronta ogni carattere, se sono diversi restituisce false
    for (int i = 0; i < s0.size(); ++i) {
        if (s0[i] != s1[i]) { return false; }
    }

    // Le stringhe hanno uguale lunghezza e i loro caratteri sono tutti uguali..
    return true;
}


Dove incontri difficoltà?


Questo come l'hai scritto non lo capisco con la & e string_equal
Codice:
"bool string_equal(const std::string &s0, const std::string &s1) "

Se copio tutto il code nel programma ccblocks non va comunuqe....
La domanda è "riceve 2 stringhe come parametri" , un parametro è
Codice:
const std::string &s0

giusto ?
ma non capisco come li hai uniti con quel string_equal , insomma non ci arrivo...
mpg
Junior Member
Junior Member
 
Messaggio: 223 di 224
Iscritto il: 28/11/2017, 09:35

Re: [C++] Aiuto per stringhe

Messaggioda apatriarca » 16/02/2019, 14:21

Che errore ti ha dato quando hai provato il codice che ho scritto (non ho provato a compilarlo)?

In che senso come li ho uniti? Non ho unito nulla, ho prima confrontato le loro lunghezze e poi iterato sui loro caratteri. Ti riferisci a qualcos'altro?

Se non hai mai visto il passaggio per riferimento puoi ignorare quel "&" e far finta che abbia scritto string s0 come parametro della funzione.

Hai una qualche risorsa che stai usando per imparare il C++?
apatriarca
Moderatore
Moderatore
 
Messaggio: 5195 di 5196
Iscritto il: 08/12/2008, 20:37
Località: Londra

Re: [C++] Aiuto per stringhe

Messaggioda mpg » 16/02/2019, 14:31

Ho "programmare con c++ " non è un libro molto dettagliato...
Non capisco string_equal cos'è, poi s0.size non li ho mai usata cosi'. l'inizializzazione delle stringhe poi?
Io ti scrivo tutto il code.
Come programma uso codeblocks e ti chiedo se anche i parametri delle stringhe devono essere sempre scritti con quel std:: prima?

Codice:
#include <iostream>
#include <string>
using namespace std;
int main()
{
bool string_equal(const std::string &s0, const std::string &s1)
{
   
    if (s0.size() != s1.size()) { return false; }

   
    for (int i = 0; i < s0.size(); ++i) {
        if (s0[i] != s1[i]) { return false; }
    }

    // Le stringhe hanno uguale lunghezza e i loro caratteri sono tutti uguali..
    return true;
}
mpg
Junior Member
Junior Member
 
Messaggio: 224 di 224
Iscritto il: 28/11/2017, 09:35

Re: [C++] Aiuto per stringhe

Messaggioda Xriuk » 18/02/2019, 14:05

mpg ha scritto:Ho "programmare con c++ " non è un libro molto dettagliato...
Non capisco string_equal cos'è, poi s0.size non li ho mai usata cosi'. l'inizializzazione delle stringhe poi?
Io ti scrivo tutto il code.
Come programma uso codeblocks e ti chiedo se anche i parametri delle stringhe devono essere sempre scritti con quel std:: prima?

Codice:
#include <iostream>
#include <string>
using namespace std;
int main()
{
bool string_equal(const std::string &s0, const std::string &s1)
{
   
    if (s0.size() != s1.size()) { return false; }

   
    for (int i = 0; i < s0.size(); ++i) {
        if (s0[i] != s1[i]) { return false; }
    }

    // Le stringhe hanno uguale lunghezza e i loro caratteri sono tutti uguali..
    return true;
}

string_equal è una funzione che ha come parametri due stringhe s0 ed s1 e restituisce un valore booleano (vero o falso)
"std::" lo puoi omettere se all'inizio hai scritto sopra "using namespace std;"
Se vai a cercare su internettrovi che .size() è una funzione che ti da la lunghezza della stringa, quindi s0.size() ti da la lunghezza della stringa s0.
Xriuk
Starting Member
Starting Member
 
Messaggio: 2 di 6
Iscritto il: 18/02/2019, 12:02


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti