DOMANDA Stringhe C++

Stato
Discussione chiusa ad ulteriori risposte.

MPG

Utente Attivo
544
4
Scusate abbiamo introdotto le stringhe molto velocemente e per casa avrei questi 4 esercizi.

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.

Ora vedo che chi di solito risponde capisce enormemente piu' di me e poichè ho appena preso un'insufficenza e questa materia per me ostica vi prego se qualcuno puo' spiegarmi in maniera semplice come funzionano le stringhe e puo' aiutarmi nello svolgimento di questi esercizi.
Vi ringrazio come sempre.
 
Ultima modifica:

BAT

Moderatore
Staff Forum
Utente Èlite
22,883
11,540
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Un ottimo inizio sarebbe quello di aprire il libro di testo che stai usando per il C++ (ne avrai uno!) e leggere il capitolo sulle stringhe... o no?
Ti devi sforzare: prima studia, prova a fare gli esercizi da solo;
non ci riesci?
allora mettiti in contatto con qualche compagno di classe! diavolo ce ne sarà uno che riesce a farli!
Con tutti i mezzi che avete a disposizione voi giovincelli (mi riferisco agli smartphone) possibile che in classe non puoi chiedere a nessuno? Se usi il forum le risposte saranno molto più lente
 
  • Mi piace
Reazioni: _Achille

MPG

Utente Attivo
544
4
Si certo , ma spesso imparo piu' da voi soprattutto se in classe non ci sono delle eccellenze in materia...
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,218
5,655
Scusate abbiamo introdotto le stringhe molto velocemente e per casa avrei questi 4 esercizi.

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.

Ora vedo che chi di solito risponde capisce enormemente piu' di me e poichè ho appena preso un'insufficenza e questa materia per me ostica vi prego se qualcuno puo' spiegarmi in maniera semplice come funzionano le stringhe e puo' aiutarmi nello svolgimento di questi esercizi.
Vi ringrazio come sempre.
Ricordo la regola:
La sezione Programmazione e le sue sottosezioni non offrono un servizio di risoluzione compiti scolastici.
E' possibile chiedere aiuto ma allegando il codice scritto o le prove fatte.
 

MPG

Utente Attivo
544
4
No certo non volevo i compiti fatti, anche in passato poi ho solo ascoltato vostri preziosi suggerimenti e postato codice.
Scusate in caso, provo a farli e poi mi direte se possibile come vanno.
 

pabloski

Utente Èlite
2,868
916
Se non vuoi usare i libri, usa questo http://www.cplusplus.com/reference/string/string/

Alla fin fine si tratta di conoscere quali metodi è possibile utilizzare e cosa fanno. Sull'implementazione delle stringhe, credo che pochi sappiano come C++ gestisce le stringhe sotto il cofano.

Suppongo stiamo parlando di std::string e non delle stringhe char[] come si usano in C.
 

MPG

Utente Attivo
544
4
SCusate ma sto cercando di fare l'esercizio b con qualcosa del genere ma ho paura di brancolare nel buio...

Codice:
bool stringa (const string a0, const string a1)
{   
    if (a0 != a1) }
return false;
}
 

pabloski

Utente Èlite
2,868
916
A parte la parentesi quadra chiusa dopo l'if, il resto va bene. La classe string fa l'overload degli operatori == e != implementandoli, sotto il cofano, tramite il metodo compare. Quindi si può benissimo usare quell'operatore per verificare l'eguaglianza di due stringhe.
 

MPG

Utente Attivo
544
4
Pero' se anche scrivo cosi' non va..
Codice:
#include <iostream>
#include <string>
using namespace std;
int main()
{

bool stringa (const string a0, const string a1)
{
    if (a0 != a1)
return false;
}
}
 

pabloski

Utente Èlite
2,868
916
Ehm perchè diavolo hai definito una funzione all'interno del main? Che poi dove inizializzi le due stringhe? E dove chiami la funzione stringa?

Temo ti manchino le basi del C++.
 

MPG

Utente Attivo
544
4
Lo so che non sono eccelso in questa materia, so le mie mancanze , è ostica per me non so che dire....
In pratica come la correggeresti ?
Ti ringrazio.
ps.
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 ripeto pero' non riesco a fare gli esercizi dettati (non erano stati presi dal libretto) con queste nozioni... colpa della mia scarsa attitudine sicuramente...

Codice:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string nome;
cout << "\nInserisci il tuo nome => ";
cin >> nome;
cout << "\nla variabile nome contiene " << nome;
cout << "\n\nFine ";
system ("pause");
return 0;
 
Ultima modifica:

pabloski

Utente Èlite
2,868
916
Direi di dare un'occhiata qui https://www.html.it/guide/guida-c2/

Da quello che ho visto non ti è chiaro proprio come si struttura un programma C++. Ed è quantomeno curioso che si parli di stringhe, quando non si ha idea di come scrivere un programma C++. Non penso che l'insegnante non abbia spiegato queste cose.

Tu lì avevi definito una funzione, ma poi non la chiamavi. L'aveva messa nel main e non ce n'è ragione. Oltretutto non dichiaravi le stringhe nè nel codice, nè tramite input da console ( come invece fa il listato che hai trovato ).
 

MPG

Utente Attivo
544
4
Nel primo esercizio è giusto mettere tipo cosi' o viene scambiato solo il primo e ultimo carattere della stringa e non la prima meta' con la seconda?

Codice:
string stringa (string a)
{
if dim=a.lenght ();
if (dim >=2)
{
int scambio= a[0];
a[0]=a[dim-1];
a[dim-1]=scambio,
}
return a;
 

pabloski

Utente Èlite
2,868
916
if dim=a.lenght (); Che diavolo sarebbe? E' completamente sbagliata la sintassi. Seriamente, hai mai programmato in C/C++?

Per il resto dice di scambiare i primi (N/2)-1 caratteri della stringa con quelli da N/2 a N-1.
 

MPG

Utente Attivo
544
4
Ho scritto sbagliato scusa:

Codice:
string stringa (string a)
{
int dim=a.lenght ();
if (dim >=2)
{
int scambio= a[0];
a[0]=a[dim-1];
a[dim-1]=scambio,
}
return a;

Ok cosi'?
 
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili