DOMANDA Ancora stringhe

Stato
Discussione chiusa ad ulteriori risposte.

Andretti60

Utente Èlite
6,440
5,091
... MI si ferma a "string ConcAltStringhe( string a, string b)"
...
"mi si ferma a": che cosa vuole dire? NULLA. Devi imparare per prima cosa a usare il compilatore, senza di quello non vai da nessuna parte. E come cercare di guidare un'auto con il serbatoio vuoto e non c'e' nessun forum che ti faccia il pieno di benzina.
Il compilatore "si ferma" perche' ha trovato un errore, e TI DICE che errore sia. Impara a leggere e capire l'errore e ti accorgerai che hai dimenticato una linea nel tuo nuovo codice, istruzione che ERA PRESENTE nelle versioni che hai postato prima.

Nessuno e' riuscito a fare l'esercizio perche' non sapete pensare. Una volta che avete imparato cosa siano i vettori (perche' una stringa non e' niente altro che un vettore) dovete imparare a USARLI, e quello lo imparate solo facendo esercizi (come appunto questo). PENSARE signifca guardare una linea di codice e CAPIRE cosa faccia, che risultato dia. Una volta che avete capito quello, tutto il resto e' facile, almeno per questo tipo di esercizi che si fanno in un minuto.
 
  • Mi piace
Reazioni: rodhellas

Krona

Nuovo Utente
69
36
Un altro consiglio utile può essere quello di disegnare su carta i vari passi che l'algoritmo deve compiere, segnati le posizioni degli indici dei vari array ad ogni passo, ti aiuterà a capire il codice da scrivere.
 
  • Mi piace
Reazioni: Andretti60

MPG

Utente Attivo
544
4
"mi si ferma a": che cosa vuole dire? NULLA. Devi imparare per prima cosa a usare il compilatore, senza di quello non vai da nessuna parte. E come cercare di guidare un'auto con il serbatoio vuoto e non c'e' nessun forum che ti faccia il pieno di benzina.
Il compilatore "si ferma" perche' ha trovato un errore, e TI DICE che errore sia. Impara a leggere e capire l'errore e ti accorgerai che hai dimenticato una linea nel tuo nuovo codice, istruzione che ERA PRESENTE nelle versioni che hai postato prima.

Nessuno e' riuscito a fare l'esercizio perche' non sapete pensare. Una volta che avete imparato cosa siano i vettori (perche' una stringa non e' niente altro che un vettore) dovete imparare a USARLI, e quello lo imparate solo facendo esercizi (come appunto questo). PENSARE signifca guardare una linea di codice e CAPIRE cosa faccia, che risultato dia. Una volta che avete capito quello, tutto il resto e' facile, almeno per questo tipo di esercizi che si fanno in un minuto.


Dunque informatica non è l'unica materia a scuola e dire che non sappiamo pensare è un po' azzardato ritengo...
Io penso che un forum cosi' specifico serva ad aiutare a crescere e a colmare lacune che uno puo' avere non perchè non studia ma perchè non è portato in questa materia, infatti ho ottimi voti in altre materie, non sono proprio "scemo".....
Quello che dico che in certi casi se uno vuole aiutare quando si fanno errori per voi grossolani perchè sapete "fare in un minuto l'esercizio" a volte magari a fianco del codice errato potete scrivere (se avete voglia) due righe sull'errore e la correzione , non si tratta di rifare tutto l'esercizio.
A questo punto forse è meglio non scrivere piu' nel forum se non sono al vostro livello, mi spiace veramente ma percepisco questo.
Io intanto ringrazio.
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,230
5,659
A questo punto forse è meglio non scrivere piu' nel forum se non sono al vostro livello, mi spiace veramente ma percepisco questo.
E' comprensibile che sia questa la tua impressione ma dal mio punto di vista domande come le tue sono le benvenute.

La cosa che immagino faccia regire un pò male certi utenti è l'idea che non ci sia l'impegno o la voglia di sforzarsi a capire i problemi, perchè spesso la soluzione è già nel messaggio d'errore o nell'uso del debug.
 

Andretti60

Utente Èlite
6,440
5,091
Un altro consiglio utile può essere quello di disegnare su carta i vari passi che l'algoritmo deve compiere, segnati le posizioni degli indici dei vari array ad ogni passo, ti aiuterà a capire il codice da scrivere.
Esattamente. Ecco perché dico che qui il problema sta nel chi non vuole "pensare". Basta un poco, carta e penna, vedere cosa succede in un vettore all'interno di un ciclo, vedere come gli indici corrono e come i vettori vengono cambiati dopo ogni ciclo. Cosa che si può fare anche (e meglio) con l'aiuto di un debugger che ormai è incluso in ogni IDE.
 

MPG

Utente Attivo
544
4
Dunque io ho fatto cosi' viene giusto

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

using namespace std;

string Concatena( string a, string b)
// es. abcd e efgh aebfcgdh
{

    int dim=a.length();
    int dim1=b.length();
     string risulta;

    if(dim==dim1)
    {
        for(int i=0;i<dim;i++)
        {
           risulta = risulta+ a[i];
           risulta= risulta+ b[i];
          
        }
    }
    return risulta;

    }
int main()
{
  srand(time(NULL));


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



    return 0;
}
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
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
Perchè utilizzi srand?
Che cosa succede se le stringhe hanno lunghezze differenti?
 

MPG

Utente Attivo
544
4
Hai ragione sdrand l'avevo dimenticato dentro non c'entra nulla, per il discorso "Se le stringhe hanno lunghezze diverse, il programma restituisce la stringa vuota " ti chiedo aiuto come scriverlo. Ho provato a mettere (dopo return risulta) return "" o return stringa () (avevo trovato online questi modi per un'empty string ) ma non viene diverso se non lo mettessi se le stringhe fossero di lunghezza diversa....

Codice:
if(dim!=dim1)
{
return "";
}
[\code]

in pratica cosi' (tra l'altro mi comprare erroe nella riga return risulta""; mi viene scritot che manca un ; )


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

using namespace std;

string Concatena( string a, string b)
// es. abcd e efgh aebfcgdh
{

    int dim=a.length();
    int dim1=b.length();
    string result;

    if(dim==dim1)
    {
        for(int i=0;i<dim;i++)
        {
           risulta = risulta + a[i];
           risulta= risulta + b[i];

        }
    }
    return risulta;
if(dim!=dim1)
   {
    return risulta"";
   }
    }

int main()
{



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



    return 0;
}

[\code]
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
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
Hai ragione, ho fatto confusione tra linguaggi. C++ inizializza direttamente la stringa a "", quindi non serve inizializzarla esplicitamente.
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!