Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C++] error: invalid conversion from "const char" to "char"

    Buonasera ragazzi ho realizzato questo semplice programma in c++

    codice:
    #include <iostream>  
    using namespace std;
    int main()
    { int N,i;
    cout<<"N ";
    cin>>N;
    cout<<'\n';
    char trattini[N];
    for (i=0;i<N;i++)
      trattini[i]="_";   
    cout<<trattini[N];
    return 0;   
    }
    in teoria,questo programma dovrebbe richiedere un valore N che sarà la grandezza di un array,che chiamiamo "trattini",e con un ciclo for inseriamo ad ogni posizione un trattino,alla fine del ciclo verà visualizzato l'array che dovrà essere riempito di trattini,tanti quanti N,ma quando compilo mi da l'errore che ho riportato nel tito nella riga
    codice:
    trattini[i]="_";
    cosa sbaglio?

  2. #2
    codice:
    for (i=0;i<N;i++)
      trattini[N]="_";
    Qui ci sono due errori; in primo luogo, dovresti scrivere trattini[i­], altrimenti ti riferisci sempre all'elemento N-esimo (che tra l'altro non esiste).
    Inoltre, "_" è una stringa (un const char *), mentre quello che tu vuoi copiare è un carattere (char); dunque, scrivi '_' (gli apici singoli specificano literal di tipo char, quelli doppi stringhe literal).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    codice:
    for (i=0;i<N;i++)
      trattini[N]="_";
    Qui ci sono due errori; in primo luogo, dovresti scrivere trattini[i­], altrimenti ti riferisci sempre all'elemento N-esimo (che tra l'altro non esiste).
    Inoltre, "_" è una stringa (un const char *), mentre quello che tu vuoi copiare è un carattere (char); dunque, scrivi '_' (gli apici singoli specificano literal di tipo char, quelli doppi stringhe literal).
    Mi ero accorto dell'errore trattini[N] infatti lo avevo corretto,ho rifatto il codice mettendo '_':

    codice:
    #include <iostream> 
    using namespace std; 
    int main() { int N,i; 
    cout<<"N "; cin>>N; 
    cout<<'\n'; 
    char trattini[N]; 
    for (i=0;i<N;i++)  
     trattini[i]='_'; 
    cout<<trattini[N]; 
    return 0; 
    }
    ma succede una cosa abbastanza strana,se metto un qualsiasi numero,mi fa visulizzare nulla XD se metto 2 (come N intendo) mi visualizza una G ò.ò

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    E che vuol dire

    cout<<trattini[N];

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Originariamente inviato da oregon
    E che vuol dire

    cout<<trattini[N];

    ?
    giusto! per visualizzare tutto l'array devo usare il for no? una cosa del tipo

    for (i=0,i<N,i++)
    cout<<trattini[i];

    giusto?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì ma rivedi la for ... non ci vanno le virgole ...

    P.S. Quando ti dicevo di rivedere le regole di base del linguaggio, non scherzavo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Sì ma rivedi la for ... non ci vanno le virgole ...

    P.S. Quando ti dicevo di rivedere le regole di base del linguaggio, non scherzavo ...
    ci vanno ";" hai ragione XD non so perchè ho messo "," adesso funziona,grazie!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Ma scusate...è una cosa lecita scrivere
    codice:
    char trattini[N]
    ??
    Dato che N,seppur scritta in maiuscolo,è una variabile...e a quanta ne so gli array sono elementi statici . .

  9. #9
    Originariamente inviato da Marco1995
    Ma scusate...è una cosa lecita scrivere
    codice:
    char trattini[N]
    ??
    Dato che N,seppur scritta in maiuscolo,è una variabile...e a quanta ne so gli array sono elementi statici . .
    scritto in quel modo,per quanto ne so è per quanto ho svolto fin ora,scrivere trattini[N] ,dopo aver fatto inserire il valore N,crea un array di nome trattini che può contenere N elementi...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Marco1995
    Ma scusate...è una cosa lecita scrivere
    codice:
    char trattini[N]
    ??
    Dato che N,seppur scritta in maiuscolo,è una variabile...e a quanta ne so gli array sono elementi statici . .
    E' consentito solo se il compilatore supporta i "Variable Length Arrays" cosa che avviene nello standard C89.

    Se lui usa DevC++/mingw funziona ... in altri casi avrai un errore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.