Newsgroup: it.comp.lang.c
Titolo: Principiante... If else...

Mi sto cimentando da Ireri con il C...
e naturalmente (spero) inizio a incontrare i primi problemini...
Riesco a sfornare un eseguibile con la funzione (a)?(b):(c) ma non con if ed 
else...
penso sia un errore di sintassi.
Ecco il programma di Calcoli a probabilità Quantiche  :-)
#############
#include <stdio.h>
int main()
{
 int num;
 printf("\nDigita un valore tra 0 e 10: ");
 scanf("%d",&num);
 (num<11)&&(num>0)
 ?(num==5)
  ?printf("\nIl numero digitato e' 5\n")
  :printf("\nIl numero digitato e' diverso da 5\n")
   :printf("\nil numero digitato e' fuori dal range possibile\n");
 }
##############   questo funziona
##############
#include <stdio.h>
int main()
{
 int num;
 printf("\nDigita un valore tra 0 e 10: ");
 scanf("%d",&num);
 if (num<11) && (num>0) {
 if (num==5)
 {
  printf("\nIl numero digitato e' 5\n")
 }
  else
   {
    printf("\nIl numero digitato e' diverso da 5\n")
   }
      }
   else
    {
     printf("\nil numero digitato e' fuori dal range possibile\n");
    }
 }
#####################  questo mi da un sacco di errori in sintassi
Ho provato un sacco di combinazioni ma non trovo quella giusta.
Grazie per l'attenzione!!! 

  if (num<11) && (num>0)
L'errore è tutto qui: la condizione dell'if deve essere interamente
rinchiusa fra parentesi; tu hai scritto "if QUESTO && QUELLO", mentre
dovevi scrivere "if (QUESTO && QUELLO)".
Ingannano le parentesi intorno alle espressioni di confronto con "<" e
">", che paiono quelle dell'if.
BTW, queste parentesi sono ridondanti perché l'operatore "&&" ha priorità
più bassa di quella deglio operatori di confronto.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 caso "vieni" da linguaggi di programmazione tipo Lisp o Prolog?
cut...
Eh!?!!?
no no
"nasco" ora con il C :-)
era un esempio che ho trovato su una guida on line.

Ahhhh dimenticavo....
Grazie a tutti e due !!! 

 return 0; // int main() deve ritornare un valore
cosa vuol dire che "deve ritornare un valore"? 

 cosa vuol dire che "deve ritornare un valore"?
Vuol dire "deve restituire un valore".
Max


la dichiarazione int main() impone che venga ritornato/restituito un 
valore.  Nel caso di main e` il valore che il programma ritorna al SO.



Vuol dire anche che ti devi comprare un buon manuale
di C.
Non puoi imparare la sintassi dagli esempi on-line.
Secondariamente, devi sforzarti di capire i messaggi di errore
del tuo compilatore.
ad esempio il mio, quando cerco di compilare la tua
roba, mi da questo messaggio
pipppp.c: In function `main':
pipppp.c:7: parse error before `('
pipppp.c:7: parse error before `{'
sembra proprio di capire che c'e' un errore veramente
bastardo in linea 7 (tanto bastardo che il compilatore
si rifiuta di leggere il resto).
Vado a vedere a linea 7 e trovo:
7:  if (num<11) && (num>0) {
ora, basta ripassare il tuo manuale di C per
vedere che la sintassi dell'if e' sbagliata.
La correggi in
if ((num<11) && (num>0)) {
oppure in
if (num<11 && num>0) {
che e' equvalente e riprovi a compilare.
Mi da altri 2 errori
pipppp.c: In function `main':
pipppp.c:11: parse error before `}'
pipppp.c:15: parse error before `}'
vado a vedere il primo errore (SEMPRE GUARDARE IL PRIMO
ERRORE, perche' a volte gli altri sono una conseguenza del
fatto che dopo un errore particolarmente grave il compilatore
non si raccapezza piu').
e vedo le linee
10:  printf("\nIl numero digitato e' 5\n")
11:  }
Siccome sulla riga 11 c'e' solo la parentesi chiusa e va bene,
deve esserci qualcosa di sbagliato prima. In effetti "prima"
c'e' che la riga 10 (e anche la 14) sono statement che devono
essere terminati dal punto e virgola.
Insomma vai avanti cosi' e risparmi un sacco di tentativi alla
cieca...
ciao,
g.

 valore.  Nel caso di main e` il valore che il programma ritorna al SO.
Questo lo capisco meglio... :-)
Grazie!!

 del tuo compilatore.
Mi sforzo ma devi capire che ho iniziato ieri...   (emh.. e non ho mai fatto 
Inglese :-) )
se sono troppo niubbo ritorno fra qualche mese... :-))
Uso Lccwin32...  consigli???
Considera che faccio tutto solo per curiosità... quindi non voglio 
Spendere!! 

 Spendere!! 
Non hai uno straccio di biblioteca nelle tue vicinanze ? Tieni conto
che se anche non hanno un testo disponibile di solito possono reperirlo
con il prestito interbibliotecario.
Comunque come prima infarinatura puo' anche darsi che si possa trovare
qualcosa di accettabile on-line.
ciao, e buona fortuna,
g.

 se sono troppo niubbo ritorno fra qualche mese... :-))
Senza l'inglese, non si va molto avanti.  Comunque quello che devi capire
è che il newsgroup non è il sostituto del manuale, ma semmai il suo
complemento.
Ponendo domande troppo banali rischi di ottenere l'effetto contrario a
quello voluto.  Personalmente non mi va di rispondere a messaggi che
chiedono che differenza c'è tra "int" e "short" o come si usa printf().
Il mio consiglio è quello di acquistare un manuale, se ci tieni veramente
ad imparare il C vale la pena farlo, e di porre al ng solo le domande cui
il manuale non risponde (o purtroppo *sembra* non rispondere).


 rispondere).
Tipo che manuale?
O qualcosa di gratuito per iniziare.... 

 O qualcosa di gratuito per iniziare....
Gratuito non so se si trovi qualcosa in rete (prova con "C Tutorial", è la
cosa più banale che mi viene in mente).  Io ti consiglierei comunque il
Kernighan&Ritchie da conservare bene bene sulla scrivania.  Non è il top
_per iniziare_, esistono molti libri newbie-oriented e se cerchi nei
vecchi messaggi sicuramente trovi dei validi suggerimenti.
