Newsgroup: it.comp.lang.c++
Titolo: Array e errori di compilazione

Salve a tutti!
Sto tentando di scrivere il mio primo programma più complicato di "Hello 
World", ma non sembra funzionare :)
Il problema sono gli array, che io personalmente odio. Comunque.
Io ho diciamo tre stringhe, così inizializzate
char i0 [] = "Hello";
char i1 [] = "Hi";
char i2 [] = "Bye";
e voglio che una di queste venga estratta casualmente.
Per farlo le ho inserite in un array unico
char i5[3] = {i0, i1, i2};
e già qui ci sono i primi problemi, infatti il compilatore (Dev-C++ per 
la cronaca) mi dà un'errore sulla conversione tra tipo char e tipo char...
poi, per l'estrazione casuale, ho dato un
int k = rand()%3; //previa inizializzazione con srand()
cout << i5[k];
e qui, un'altra valanga di syntax errors.
Ma fino ad ora niente di strano, sapevo di non essere in grado di 
gestire gli array. Più avanti invece c'è di peggio.
Vorrei gestire l'input dell'utente per una semplice domanda s/n tipo
char again;
cout << "Vuoi ricominciare? (y/n)";
cin >> again;
if (again == "y") restart();
else return 0;
ma mi dice che ISO C++ proibisce il confronto tra pointer e integer, e 
non capisco proprio di cosa parli!
preso dalla disperazione, ho provato a settare un
char y = "y";
e di conseguenza cambiare l'if in
if (again == y)
ma mi dà un'errore di conversione tra int e char, credo.
Come potrei risolvere i molteplici problemi?
Grazie mille!
Leo

 char y = "y";
Che non compila per la ragione di cui sopra.
Salut!
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

 Leo
In definitiva:
int main(){
 char i0[]="Hello";
 char i1[]="Hi";
 char i2[]="Bye";
 char *i5[3]={i0,i1,i2};
 char again;
 srand(time(0));
 int k = rand()%3;        //  io farei la dichiarazione sopra all'inizio e 
qui metterei: k = rand()%3;
                                  //  cmq non è sbagliata
 cout << i5[k] << endl;
 cout << "Vuoi ricominciare? (y/n)";
 cin >> again;
 if (again == 'y'){
  cout << "hai scelto si" << endl;
  return 0;
 }
 else
  return 0;
} 

 la cronaca) mi dà un'errore sulla conversione tra tipo char e tipo char...
Ti avra' dato un errore sulla conversione tra tipo char* e tipo char (attenzione 
al *).
Dal tuo post deduco che non hai ben chiaro il concetto di puntatore e, purtroppo 
o per fortuna, in c++ i puntatori sono una parte fondamentale, soprattutto per 
quanto riguarda gli array.
Infatti, in realta', i0 non e' altro che un puntatore alla prima cella di 
memoria dove e' memorizzata la tua stringa. Quindi se vuoi inserire le tre 
stringhe in un altro array devi creare un array di puntatori (o equivalentemente 
un puntatore a puntatore a carattere) come ti ha giustamente suggerito AlC4Tr4z.
Ti consiglio pero' di non copiare il suo suggerimento ad acchi chiusi, che ti 
fara' funzionare solo questo programma, ma di cercare di approfondire 
l'argomento, che ti fara' funzionare tutti (o quasi) i programmi.
A tal scopo, se hai confidenza con l'inglese ti consiglio di cercare su internet
'Thinking in C++' di Bruce Eckel, dovrebbe esistere anche una versione tradotta 
in italiano, benche' incompleta.
-- 
Paolo

 di istruzione dopo
non c'è problema tanto, come detto sopra, il programma è un po' diverso
void thx() {
	cout << "Grazie mille!";
}
Afterwards, Paolo Bernini wrote:
 >Dal tuo post deduco che non hai ben chiaro il concetto di puntatore e, 
 >purtroppo o per fortuna, in c++ i puntatori sono una parte 
 >fondamentale, soprattutto per quanto riguarda gli array.
Per niente chiari... :(
 >A tal scopo, se hai confidenza con l'inglese ti consiglio di cercare 
su >internet
 >'Thinking in C++' di Bruce Eckel
obbedisco :)
thx();
Ciao,
Leo

 Salut!
Grazie.
Ciao.
Leo