Come assegnare parola a variabile ??

di il
12 risposte

Come assegnare parola a variabile ??

Ciao a tutti sto studiando il C++ perchè mi appassiona l'informatica e sono agli inizi. Sapreste dirmi come assegnare una parola che scelgo io, ad esempio Stefano a una variabile il cui nome è scelto da me?? Sto provando con questo codice ma non funziona quando cerco di compilarlo,
Per farvi capire meglio cerco di dichiarare la variabile nome il cui valore sarà scelto dall'utente, e voglio confrontarlo dove c'è l' if con la variabile verifica alla quale vorrei attribuire il valore Stefano, sapreste aiutarmi? Grazie a tutti !

#include <stdio.h>
#include <iostream>
#include <string>
#include <stdlib.h>

int main (void)
{
string nome;
string verifica = "Stefano";
printf ("Scrivi il tuo nome': ");
scanf ("%c", &nome);
if (nome == verifica)
{
printf ("\nCORRISPONDE\n");
}
else
{
printf ("\nNON CORRISPONDE\n");
}
system ("pause");
}

12 Risposte

  • Re: Come assegnare parola a variabile ??

    A spiegare il PASTICCIO/ORRORE CONCETTUALE che stai facendo sarebbe troppo complicato (e' evidente che ti mancano CONCETTI fondamentali di programmazione C++).

    Risolvila cosi': le STRINGHE lette da tastiere LE DEVI METTERE in un ARRAY di CARATTERI (char buffer[255], ad esempio).
    SOLO DOPO assegni il contenuto dell'ARRAY ad una variabile di tipo "string"

    E RIGUARDATI la DOCUMENTAZIONE della "scanf" PERCHE' anche qui HAI SBAGLIATO di scrivere!
    C'e' un ORRORE CONCETTUALE gigantesco.
  • Re: Come assegnare parola a variabile ??

    Grazie per aver risposto anche se sono confuso lo stesso, potresti scrivermi tutto il codice corretto a partire dalla prima riga dopo int main void fino a dove c'è l' if (compresa la riga del if) ? Scusa gli errori ma sono un principiante e sto cercando di imparare tramite internet
  • Re: Come assegnare parola a variabile ??

    Non si chiede tutto il codice sul forum. Si chiedono consigli.

    Prova ad utilizzare la

    cin

    per l'input al posto della scanf.
  • Re: Come assegnare parola a variabile ??

    Si ma io così non ci capisco niente, sapete tutti come è formale nella sintassi e dire prova a usare la cin che si potrà usare in 10 modi diversi come glielo scrivo al programma senza commettere errori di sintassi? Che problema c'è nel chiedere qualche riga di codice ? Così poi la commentavamo insieme per capire.. se deve essere così per chiedere aiuto fa niente grazie lo stesso per lo sforzo
  • Re: Come assegnare parola a variabile ??

    Domandona di rito (di cui immagino la risposta): su quale LIBRO stai studiando?

    Sia chiaro, PUO' ESSERE anche un pdf, non neccessariamente un libro cartaceo!
  • Re: Come assegnare parola a variabile ??

    migliorabile ha scritto:


    Domandona di rito (di cui immagino la risposta): su quale LIBRO stai studiando?

    Sia chiaro, PUO' ESSERE anche un pdf, non neccessariamente un libro cartaceo!
    Su internet, vari pdf, forum ecc.. so che è confusionale ma studiando da autodidatta non ho altri mezzi, tu saresti disposto a scrivermi il codice? Così almeno lo provo e cerco di capire
  • Re: Come assegnare parola a variabile ??

    Forty9669 ha scritto:


    Si ma io così non ci capisco niente, sapete tutti come è formale nella sintassi e dire prova a usare la cin che si potrà usare in 10 modi diversi come glielo scrivo al programma senza commettere errori di sintassi? Che problema c'è nel chiedere qualche riga di codice ? Così poi la commentavamo insieme per capire.. se deve essere così per chiedere aiuto fa niente grazie lo stesso per lo sforzo
    Calma ... ti sfugge che qui sei tu quello che deve studiare. Tu non volevi una riga ma "dalla prima all'ultima" ...

    Ti devi impegnare... se ci sono tanti modi, apri il libro e dai un'occhiata, fai le tue considerazioni e se ci sono problemi siamo qui. Altrimenti hai capito male su come funziona il forum ...
  • Re: Come assegnare parola a variabile ??

    Forty9669 ha scritto:


    Su internet, vari pdf, forum ecc.. so che è confusionale ma studiando da autodidatta non ho altri mezzi, tu saresti disposto a scrivermi il codice? Così almeno lo provo e cerco di capire
    Non e' confusionario, ma PROPRIO INUTILE!
    Cosi' stai il triplo del tempo per capire un terzo di quello che ti serve!
    Manco il doppio!!!!

    SI STUDIA SUI LIBRI (o PDF che siano), NON a spizzichi e bocconi pescati a casaccio a destra e a manca!!!!
    E sul libro avresti trovato ESATTEMENTE le risposte alle domante che stai facendo.

    Consiglio: se vuoi imparare a programmare come autodidatta, LASCIA PERDERE il C++, e passa a Python.

    Tra i linguaggi di cui avrai sentito parlare (PHP, Ruby, Java, C#, C++, ecc),

    C++ E' il linguaggio di programmazione in ASSOLUTO IL PIU' COMPLESSO da imparare, con funzionalita' che sono astronomicamente superiori a quello che ti puo' servire. Lascia perdere!

    Solo per capire le quattro righe di codice che stai chiedendo ti serve avere chiaro:
    1) puntatori
    2) allocazione dinamica della memoria
    3) allocazione della memoria sullo stack
    4) classe, costruttore, distruttore
    5) overloading degli operatori
    6) differenza tra calloc/malloc/free, new/delete
    7) il concetto di "stringa" in C ed in C++
    8 ) le proprieta'/funzionalita' della classe "std::string"

    solo per elencare i concetti piu' banali che mi vengono in mente.

    Infine, che cosa e' questa sciocchezza del non avere i mezzi???
    Quali mezzi (o interi che siano) pensi servano?
    Servono LIBRI, TANTI LIBRI, E TANTO TEMPO per STUDIARE (TANTO STUDIO)!
  • Re: Come assegnare parola a variabile ??

    migliorabile ha scritto:


    Forty9669 ha scritto:


    Su internet, vari pdf, forum ecc.. so che è confusionale ma studiando da autodidatta non ho altri mezzi, tu saresti disposto a scrivermi il codice? Così almeno lo provo e cerco di capire
    Non e' confusionario, ma PROPRIO INUTILE!
    Cosi' stai il triplo del tempo per capire un terzo di quello che ti serve!
    Manco il doppio!!!!

    SI STUDIA SUI LIBRI (o PDF che siano), NON a spizzichi e bocconi pescati a casaccio a destra e a manca!!!!
    E sul libro avresti trovato ESATTEMENTE le risposte alle domante che stai facendo.

    Consiglio: se vuoi imparare a programmare come autodidatta, LASCIA PERDERE il C++, e passa a Python.

    Tra i linguaggi di cui avrai sentito parlare (PHP, Ruby, Java, C#, C++, ecc),

    C++ E' il linguaggio di programmazione in ASSOLUTO IL PIU' COMPLESSO da imparare, con funzionalita' che sono astronomicamente superiori a quello che ti puo' servire. Lascia perdere!

    Solo per capire le quattro righe di codice che stai chiedendo ti serve avere chiaro:
    1) puntatori
    2) allocazione dinamica della memoria
    3) allocazione della memoria sullo stack
    4) classe, costruttore, distruttore
    5) overloading degli operatori
    6) differenza tra calloc/malloc/free, new/delete
    7) il concetto di "stringa" in C ed in C++
    8 ) le proprieta'/funzionalita' della classe "std::string"

    solo per elencare i concetti piu' banali che mi vengono in mente.

    Infine, che cosa e' questa sciocchezza del non avere i mezzi???
    Quali mezzi (o interi che siano) pensi servano?
    Servono LIBRI, TANTI LIBRI, E TANTO TEMPO per STUDIARE (TANTO STUDIO)!


    Va bene ho capito, sapreste mettermi il link di qualche sito che spiega tutto a partire da zero o al limite il link di un libro da comprare ? Se trovate il link di una guida online è preferibile grazie ..
  • Re: Come assegnare parola a variabile ??

    Forty9669 ha scritto:


    Va bene ho capito, sapreste mettermi il link di qualche sito che spiega tutto a partire da zero o al limite il link di un libro da comprare ? Se trovate il link di una guida online è preferibile grazie ..
    No. Le guide online non sono MAI preferibili ad un buon manuale cartaceo.

    Non posso che ribadire il consiglio di lasciar perdere C++ e dedicarsi a linguaggi più user-friendly e con curve di apprendimento nettamente meno ripide, come appunto Python.

    Tra l'altro, di quando in quando, è anche il caso di rammentare che eventuali PDF online ricavati da testi pubblicati sono nel 99,999% dei casi illegali e resi disponibili in spregio alle vigenti disposizioni internazionali sul copyright, commettendo un illecito amministrativo (che in alcuni paesi configura perfino un reato penalmente perseguibile, specie laddove improvvidi legislatori abbiano fatto pasticci tra scopo di lucro e banale profitto) del quale giuridicamente si rende correo anche chi scarica e salva tali files.
  • Re: Come assegnare parola a variabile ??

    1. In C le variabili di tipo "string" non esistono. Una stringa va dichiarata come un vettore di caratteri. Di conseguenza la dichiarazione corretta sarebbe
     char nome[32] 
    2. Nelle funzioni scanf e printf, tuttavia, non puoi leggere o scrivere una stringa usando "%c", che andrebbe bene per UN SOLO carattere.
    Dato che sarebbe assurdo dover utilizzare un ciclo "for" per assegnare o leggere la stringa trattandola come un vettore di caratteri, si può (e si deve) usare "%s" quando si ha a che fare con stringhe. Di conseguenza si deve scrivere
     printf("scrivi il tuo nome\n");
     scanf("%s", &nome);
    (dove "\n" viene utilizzato per andare a capo, vedrai quando avrai l'eseguibile perché sia necessario inserirlo)

    Enniente, come ti han già detto di fare, procurati un buon libro e studia da quello. C non è eccessivamente complesso se si possiede una certa confidenza con i costrutti logici tipici della programmazione, ma è difficile da imparare se non lo si affronta con criterio.
  • Re: Come assegnare parola a variabile ??

    Ciao Forty9669, io mi sono iscritto a questo forum apposta per risponderti.
    Anche io sono nuovo nel mondo della programmazione e sto studiando da qualche mese il C++ da autodidatta come te, ma su un libro cartaceo.
    Ho cominciato da piccolo, sono passato per il visual basic, per il C e il C++ studiando sui video tutorial di canali italiani famosi per l'apprendimento dei linguaggi di programmazione, dato che sei autodidatta li avrai sicuramente incontrati anche tu su YouTube.
    Ma ben presto abbandonai tutto, perché mi scocciavo di vedere quei video così lunghi e mi scocciavo di stare fermo ad aspettare che il professore pensasse per me, e soprattutto perché per riuscire a comprendere bene i concetti della programmazione avrei dovuto essere un po' più maturo.
    A 18 anni, cioè oggi, il governo italiano Renzi propone ai giovani neo diciottenni 500 euro da spendere in libri e cultura.
    Grazie al bonus mi sono comprato tantissimi libri, tra cui alcuni per lo studio della lingua cinese, per la lingua giapponese, per la famiglia e ben due libri di programmazione.
    La scelta su quale linguaggio studiare è ricaduta sul C++, per questi motivi: è moderno, puoi creare applicazioni sia per computer che per telefono, è potentissimo, è il più difficile, ma è il più completo, è orientato agli oggetti.
    Io non voglio studiare mille linguaggi per poi arrivare al C++, non voglio partire per il basic, passare per il pascal o il phyton, per il java, qualche pazzo su internet parla addirittura di cominciare dall'html, passare per il C e poi alla fine arrivare al C++.
    Io mi studio direttamente quello più difficile, così se dovessi usare altri linguaggi non troverei nessuna difficoltà avendo studiato su quello più difficile, è chiaro quello che voglio dire?
    La maggior parte ti sconsiglia di partire dal C++? Ma se ti fai un giro su google americano ti assicuro che trovi molte persone che ti dicono il contrario, ti dicono di partire dal C++.

    Questa è la risposta di un utente americano sulla questione ( presa dal forum "cplusplus" e tradotta in italiano ... ti consiglio di seguire quel forum se continuerai a studiare perché è una miniera d'oro): http://www.cplusplus.com/forum

    << "Il C++ è un linguaggio perfettamente utile e buono per imparare a programmare. Ha tutti gli strumenti base che potresti trovare in qualunque altro linguaggio imperativo o orientato agli oggetti.
    Imparare a programmare ha veramente poco a che fare con la scelta del linguaggio. Certo, alcuni linguaggi sono particolarmente indicati per imparare a programmare, per esempio il Python o il Pascal.
    Ma imparare a pensare a quello che devi fare è molto più importante di scegliere un linguaggio di programmazione.
    Imparare come funziona un computer e come esprimere i propri pensieri nei termini con cui il computer lavora, questo è il vero obiettivo, non studiare <dei linguaggi di programmazione a caso>
    Non importa quale sia la tua scelta del linguaggio, dovrai accettare alcune strane linee di codice quando cominci. Nel caso del C++ si parla di roba tipo il simpatico int main( int argc, char** argv ).
    Quando arriverà il momento, imparerai cosa significa e in che modo potrai usarlo correttamente, ma fino a quel momento non te ne devi preoccupare. Fai semplicemente un passetto alla volta.
    Quindi considerato che di solito non è importante da quale linguaggio si parte, ma è importante che ti piaccia programmare, non ti scoraggiare se studiare ti prenderà molto tempo, probabilmente ti incasinerai il cervello su qualche concetto base della programmazione, come in tutte le altre discipline d'altronde. Quando finalmente riuscirai, proverai un particolare senso di soddisfazione e non smetterai più di studiare.">>

    Insomma, ascolta i pareri degli altri, ma poi ragiona e valuta quello che secondo te è giusto. Nel mio caso quindi ho scelto C++.
    Per quanto riguarda la scelta del libro sul quale studiare, ho fatto delle ricerche ed ho capito che c'è più discordanza sui libri che sulla scelta del linguaggio. Dato che a me interessava partire proprio dall'inizio ho scelto "C++ Fondamenti di programmazione (seconda edizione)" di Deitel (padre e figlio), mentre come secondo libro, più avanzato, "C++ Linguaggio, libreria standard, principi di programmazione" di Bjarne Stroustrup, il creatore del C++, da leggere alla fine del primo libro.

    Questa è la recensione di un libro di cinese venduto da Amazon fatta da una ragazza (ho eliminato alcuni pezzi per renderlo più pertinente):

    << " Nel comprare il terzo volume di questa collana mi sono imbattuta in una recensione a dir poco negativa, a mio avviso del tutto esagerata. [...]
    Ho studiato diligentemente e appassionatamente, non mi sono lasciata sfuggire neanche un carattere [...] ho passato giorni interi a scrivere [...] insomma, ho sfruttato al massimo il potenziale del libro [...] Dalla mia esperienza posso dirvi che il libro non è sicuramente perfetto, nessuno lo è, è comunque ottimo, ma non lasciatevi fuorviare da discorsi sulla qualità dei libri, perché il segreto è sfruttare al massimo anche la peggiore delle risorse che abbiamo a disposizione. Non crediate che basterà dare una letta, fare due ascolti per arrivare a padroneggiare il livello che il libro si propone perché non è così che funziona. [...] ci sono degli esercizi che vanno fatti e compresi [...] non esistono soluzioni rapide e facili, né per il cinese né per nessun'altra lingua. Ma dare la colpa ai libri scarsi significa illudersi che siano i libri i responsabili del nostro apprendimento e non noi stessi. " >>

    Per quanto riguarda le copie digitali, partendo dal presupposto che il PDF di un libro non significa per forza che sia piratato, ormai tutti sanno che uTorrent consente di scaricare anche i libri di programmazione in PDF completi e gratuitamente, ma illegalmente e quindi punibile per legge, ma pochi sanno che google offre la possibilità di sfogliare un po' tutti i libri, compreso quello su cui sto studiando io, in anteprima, tipo per le prime 200 pagine, online e legalmente.
    Qui puoi trovare per esempio le prime 200 pagine del libro su cui sto studiando io: http://tinyurl.com/zvv96v
    Io sono d'accordo con chi pensa che il libro cartaceo sia meglio del digitale, perché io mi sto trovando benissimo a studiare sul mio libro cartaceo, ma se devo solo leggere una pagina del mio stesso libro sul computer mi viene il vomito e mi passa la voglia.
    Quello che posso dire sul libro che ho acquistato è che mi sto trovando bene, ma ho notato che ci sono alcuni errori di traduzione e di stampa, ma che non rendono assolutamente negativa l'esperienza di apprendimento.

    Quando non capisco un'istruzione o un esercizio, la prima cosa che faccio è documentarmi su fonti online, possibilmente inglesi, se non ci capisco nulla passo alle fonti italiane, oppure cerco la traccia dell'esercizio su google e di solito mi spuntano già persone che hanno chiesto aiuto prima di me su quel problema. Se mancano oppure continui a non capire, basta che ti iscrivi a qualche forum come questo oppure molti altri sul web e domandi. Nessuno sarà disposto a darti tutto il codice ma molti saranno lieti di aiutarti con degli indizi. Gli indizi che ti daranno non saranno quasi mai espliciti, cioè le persone ti danno degli indizi su cui devi essere tu a ragionare e trovare la soluzione. Lo devono fare, perché ti devi abituare a ragionare da solo, non dovrai aver sempre bisogno di qualcuno che ti dia la pappa pronta.
    Se non ci arrivi la gente può reagire bene, ti può scrivere parte del codice, oppure ti può mandare a quel paese in maniera più o meno garbata. è naturale, loro non si sono fatti di pappa pronta per arrivare dove sono.

    Adesso veniamo al tuo codice:
    Prima di tutto, se compilo il codice così come lo hai scritto, mi compare subito l'errore "string was not declared in this scope", cioè string non è stato dichiarato.
    Praticamente il compilatore non sa cosa sia "string" o dove prenderla, vuole qualche informazione in piu su dove si trova string, perché non gli basta sapere che è incluso nella libreria "string".
    La soluzione è di specificare dopo tutte le librerie (tutti gli #include) questo codice:
    using namespace std;
    significa, potrei dire qualche bagianata perché sono beginner come te, che "string" fa parte di un determinato spazio (namespace standard).
    Non c'è bisogno di capirlo molto all'inizio, scrivilo e basta altrimenti non vai avanti.

    Il problema centrale del tuo codice sta nel fatto che hai mischiato due linguaggi diversi, il C e il C++.
    Scanf e printf sono due istruzioni del C, mentre le equivalenti in C++ di queste due sono rispettivamente "cin" e "cout".
    Quando tu hai scritto scanf, hai inserito come tipo di variabile da ricevere %c, che dovrebbe essere "character", cioè un singolo carattere (ancora non me ne intendo di C ). In una variabile char non entra la parola "Stefano". E poi dopo gli hai detto di inserire il carattere letto in una variabile di tipo string (nome). "String" è un oggetto del C++, il C non sa come gestirlo.

    Deciditi:

    1) Se ti vuoi imparare il C++ devi togliere di mezzo "printf" e "scanf" e devi usare le sue istruzioni, cioè "cin", "cout" e "string".
    2) Se ti vuoi imparare il C: togli di mezzo le "string" e lavora con i char e gli array di char.

    Se vuoi sapere come si usano queste istruzioni il libro te le spiega nelle prime pagine, altrimenti puoi cercarti qualcosa su google oppure su Youtube se è meglio per te, cercando qualcosa tipo "cout C++ ita" e "cin C++ ita".
    Per esempio il secondo risultato qui:

    Il tuo codice in C++ (parti da questo):
    
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    int main ()
    {
       string nome;
       string verifica = "Stefano" ;
    
       cout << "Scrivi il tuo nome: ";
       cin >> nome;
    
       if ( nome == verifica )
       {
          cout << "\n" << "CORRISPONDE" << endl;  //puoi usare "endl" al posto di "\n";
       }
          else
          {
             cout << endl << "NON CORRISPONDE" << "\n\n";
          }
    
       // Attento alla lettera maiuscola di Stefano!
    
       system ("pause");
    }
    
    Ah a proposito, sui forum i codici vengono scritti tra i tag "[CODE]", per differenziarlo dal testo normale. [img]http://i67.tinypic.com/mutqon.png[/img] L'ultima cosa, i libri sicuramente ti insegneranno che il codice deve essere ordinato e leggibile e le parentesi graffe devono seguire un certo ordine (indentatura), quindi mi raccomando scrivi sempre codice leggibile. Se mi viene in mente qualcos'altro da dirti modifico il messaggio, in bocca al lupo! P.S. Chiedo scusa ai senior della programmazione se ho detto qualche bagianata, sono un super beginner anch'io! f21
Devi accedere o registrarti per scrivere nel forum
12 risposte