Newsgroup: it.comp.lang.c++
Titolo: Non riesco a trovare l'errore!

Salve,
sto leggendo per la prima volta un manuale di C++ e ho trovato un
esempio che riporto di suguito. Quando compilo (con DevC++) mi da il
seguente errore:
parse error at end of input
alla linea 73, praticamente sull'ultima parentesi graffa del main.
Non riesco a capire perche'!!!!!!!!
Qualcuno puo' aiutarmi?
Grazie
Donatella :)
++++++++++++++++++++++++++++++++++++++++++++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char matrice[4][4]={' ',' ',' ',' ',
                    ' ',' ',' ',' ',
                    ' ',' ',' ',' ',
                    ' ',' ',' ',' '};
int calcola_x, calcola_y, giocat_x,giocat_y;
 gioco_sott()
 {
  matrice[calcola_x][calcola_y]=' ';
  calcola_x=rand()*123 % 4;
  calcola_y=rand()*12  % 4;
  if (matrice[calcola_x][calcola_y]=='C')
   return 1;
  else {
   matrice[calcola_x][calcola_y]=='S';
   return 0;
  }
 }
 gioco_cacc()
 {
  matrice[giocat_x][giocat_y]=' ';
  do {
   printf("Introdurre la coordinata X: \n");
   scanf("%d",&giocat_x);
   printf("Introdurre la coordinata Y: \n");
   scanf("%d",&giocat_y);
  } while (giocat_x<0 || giocat_x>3 || giocat_y<0 || giocat_y>3);
  if (matrice[giocat_x][giocat_y]=='S')
   return 1;
  else {
   matrice[giocat_x][giocat_y]=='C';
   return 0;
  }
 }
 visualizza_matrice()
 {
 printf("\n");
 printf("+-------------------------+\n");
 printf("|  %1c  |  %1c  |  %1c  |  %1c  |\n",
matrice[0][0],matrice[0][1],matrice[0][2],matrice[0][3]);
 printf("|----+----+----+----+-----|\n");
 printf("|  %1c  |  %1c  |  %1c  |  %1c  |\n",
matrice[1][0],matrice[1][1],matrice[1][2],matrice[1][3]);
 printf("|----+----+----+----+-----|\n");
 printf("|  %1c  |  %1c  |  %1c  |  %1c  |\n",
matrice[2][0],matrice[2][1],matrice[2][2],matrice[2][3]);
 printf("|----+----+----+----+-----|\n");
 printf("|  %1c  |  %1c  |  %1c  |  %1c  |\n",
matrice[3][0],matrice[3][1],matrice[3][2],matrice[3][3]);
 printf("+-------------------------+\n");
 printf("\n");
 }
main()
{
  calcola_x=calcola_y=giocat_x=giocat_y=0;
  for (;;) {
   if (gioco_sott()) {
    printf("Vince Computer\n");
    break;
    }
   if (gioco_cacc()) {
    printf("Hai vinto tu\n");
    break;
    }
   visualizza_matrice();
}
++++++++++++++++++++++++++++++++++++++++++++

 }
Ciao,
Nicola Musatti
Obiettore e poi borsista al Negri Nord tra l' '87 ed il '90

++++++++++++++++++++++++++++++++++++++++++++
Significa che non hai chiuso la graffa del for.
Non ho guardato il codice ma ho solo provato a compilarlo e ho notato
due cose:
1- In C++ standard devi specificare il tipo ritornato da una funzione,
non:
main(){...}
ma:
int main(){...}
2- che senso ha:
matrice[calcola_x][calcola_y]=='S'?
--
Marco Barisione (ICQ 84277092)

 {
Idem il discorso del valore di ritorno.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 .
.
.
.
.

 Al prossimo programmino (pieno di errori naturalmente!)...
Allora e' semplice. Aggiungi la graffa mancante. Correggi i == che quasi
certamente erano =. E compilalo con un compilatore C (o con un compilaotre C/C++
in modalitą C).
Pero' se leggi un testo che spiega il C++ partendo dal C ... dovresti conoscere
gią bene il C. E se hai un po' di esperienza di sviluppo C e' strano che tu non
sia stata in grado di scoprire da sola l'inghippo. Sia la mancata graffa che la
doppia == al posto della singola (o il piu' comune caso opposto) sono errori
frequenti che chi ha un pochino di esperienza scopre "al volo".




.... infatti non conosco affato il C!!! Vorrei passare direttamente al
C++ visto che anche su questo ng ho letto che per imparare il C++ non bisogna
conoscere il C!!! Il libro che leggo prevede un po' di sintassi di C (cicli,
vettori, puntatori, funzioni, ecc) per poi passare al C++. Non e' fatto
troppo bene, ma lo leggo solo perche' e' in italiano e vorrei prima una
conoscenza di base per poi poter leggere il "Thinking in C++" che e' in
inglese (ahime'!!!).

Ciao

Donatella :)

p.s.: ho fatto le correzioni e funziona!!

 

Andrea Ferro wrote:

Allora e' semplice. Aggiungi la graffa mancante.
Correggi i == che quasi

certamente erano =. E compilalo con un compilatore C (o con un compilaotre
C/C++

in modalità C).

Pero' se leggi un testo che spiega il C++ partendo dal C ... dovresti
conoscere

già bene il C. E se hai un po' di esperienza di sviluppo C e'
strano che tu non



 leggere il "Thinking in C++" che e' in inglese (ahime'!!!).
A questo punto urge chiedere ai prodi cavalieri che si stavano occupando della
traduzione in italiano del librone di Bruce a che punto sono arrivati della loro
ermetica (?) missione e se sono in grado di soccorrere questa donzella in
periglio :-)
Ragazzi, ci siete ancora?


igienica usata (e non e' un eufemismo). Cambialo immediatamente.
Uhm..come certi "tutorial" sul C++ che purtroppo si trovano in rete
anche su siti dal nome altisonante. Una vera piaga, purtroppo.
Il Ghenio
-----
ZIO : Fun and games are over with. Anyone who dares
get in my way shall perish.
DIO ci salvi dagli ocx del Viral Basic.
-----

 Ragazzi, ci siete ancora?
io sono ancora vivo, ma credo che ormai possiamo definitivamente bollare il 
progetto come chiuso... ho provato a mandare qualche messaggio in mailing 
list ma non ho ricevuto risposta :-((
Ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 non e' molto conforme alla filosofia del linguaggio.
sei sicuro? A me risulta che in c++ e' vietata la dichiarazione di tipo 
(sia tipo di ritorno che di variabile) implicita, come del resto anche in 
C99.
g++ 3 mi segna errore se provo ad omettere il tipo di ritorno.


 g++ 3 mi segna errore se provo ad omettere il tipo di ritorno.
Mi accorgo di essere stato ambiguo. Ho detto "I compilatori C++ ..." ma
intendevo "Alcuni compilatori C++ ...".
Per lo standard la cosa e' illegale. Proprio per questo la segnalavo.
