Newsgroup: it.comp.lang.c
Titolo: Mi serve una mano

Salve a tutti, ragazzi, mi dovere aiutare: questo sorgente in C l'ho fatto
io a scuola, il testo dell'esercizio era: "Acquisire due valori,
confrontarli e stampare a video il risultato" è una cazzata, ma io mi trovo
in difficoltà xchè bisogna usare:
if
else if
else
switch case
lo switch dove lo metto?
#include<stdio.h>
#include<conio.h>
void main(){
 int a,b,c;
 printf("Dammi il primo numero: ");
 scanf("%d",&a);
 printf("Dammi in secondo numero: ");
 scanf("%d",&b);
 if(a<b)
  printf("\nIl numero %d e' minore di %d\n",a,b);
 else if(a==b)
  printf("\nI numeri %d e %d sono uguali\n ",a,b);
 else
  printf("\nIl numero %d e' maggiore di %d\n \n",a,b);
}

 wrote in message
H0rd8.5616$_u5.1...@news1.tin.it...


}
In pratica sposti il confronto di uguaglianza nello switch, poi pero'
defi sempre effettuare un controllo per vedere se c e' positivo o
negativo.
Comporre i vari costrutti in modi nuovi, anche se non molto
efficienti, risulta un buon esercizio di flessibilita' mentale secondo
me :)
Mox

precedente al tuo (quello sugli automi)? Ho molto bisogno...
Uhmm, io non ne ho mai incontrata nessuna. Spero per te che qualcuno
sia piu' preparato.
Anche su google non si trovano molti link del tipo che servono a te.
Hai guardato nei sorgenti di programmi come flex e bison che
gestiscono degli automi cosa utilizzano?
Nota: e correggete il Reply, e' odioso veder un thread che si divide
perche' qualcuno fa' il reply con "R:" anziche' "Re:" :)
Mox

 ha scritto nel messaggio
news:H0rd8.5616$_u5.1...@news1.tin.it...


 ha scritto nel messaggio
news:T1Z2PNNGY0Bgdd...@4ax.com...


stessa cosa con un for o un while :)
Secondo me poi userebbero tutti solo i goto.
-- 
Marco Barisione (ICQ 84277092)

opinioni, io lo userei come il pane come quando da piccino usavo il basic
Orrore, un'altro reduce del basic come me :)  Comunque in basic
l'orrore maggiore non era il goto, ma il fatto che a ogni linea si
associasse un etichetta numerica e che se dovevi inserire qualcosa tra
la riga n e la n+1 dovevi rinominare tutte le riche dalla n-1 alla
fine del file :P
</OT_SECTION>
Mox 

Secondo me poi userebbero tutti solo i goto.
IMHO e' un rischio, ma non puoi obbligare le persone a non usare il
goto se non li convinci.
Se io non uso il GOTO e' perche' quando ho imparato il C mi e' stato
spiegato (docenti + libri + altre fonti) perche' il goto e' un male (e
dopo aver visto un programma che usava i goto fatto da un mio amico,
quando assolutamente non era il caso di usarlo).
Mox :)

 (anche se non capita sovente):
direi che anche la gestione degli errori e' un buon punto a suo favore
  {...}
   if (errno==ERRORE) goto errori;
  {...}   
   if (errno==ERRORE) goto errori;
  {...}   
   if (errno==ERRORE) goto errori;
  {...}
 
   goto no_errori;
errori:
  /* rilascio memoria, messaggi d'errore, etc */ 
no_errori:
  /* normale terminazione */

  {...}  
[cut]
Potrei obbiettare:
void errore(void) {
	printf("a message\n");
	cleanup();
	exit(EXIT_FAILURE);
}
if (errno == ERRORE)
	errore();
if (....)
	errore();
 
foobar();
In questo modo e` evidente l'intenzione di trattare la condizione di
errore in modo separato. Scritto con il goto diventerebbe:
if (errno == ERRORE)
	goto errore;
if (....);
	goto errore;
goto nessun_errore:
errore:
printf("a message\n");
cleanup();
exit(EXIT_FAILURE);
nessun_errore:
foobar();
che, onenstamente, fa rabbrividire.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Sono un mirabile incrocio tra Tarzan e Giacomo Leopardi.
In me convivono tutte le doti intelluttuali di Tarzan e
tutta la prestanza fisica di Giacomo Leopardi.
A. Borsani

Per usare tutti i comando potresti usare lo switch nel confronto degli 
elementi


#include<stdio.h>
void main(){
 int a,b;
  char r;
nuovo:          /*riferimento per goto*/
 printf("Dammi il primo numero: ");
 scanf("%d",&a);
 printf("Dammi in secondo numero: ");
 scanf("%d",&b);
 
 if (a<b)
 
          printf("\nIl numero %d e' minore di %d\n",a,b);
 
 else 
 
        if(a==b)
 
                printf("\nI numeri %d e %d sono uguali\n ",a,b);
 
        else
                printf("\nIl numero %d e' maggiore di %d\n \n",a,b);
 
 
 printf("Vuoi effettuare un\'altro confronto tra nuovi valori? s/n \n");
 scanf("%c",&r);
 
 switch (r)
 {
         case 's':
         case 'S':
                  goto nuovo;    /*ritorna al punto "nuovo" mediante l'istruzione goto*/
         case 'n':
         case 'N':
                 break;         /*termina il programma*/
 }
}
Dichiari la var int c; che non usi, includi  conio.h che non serve.
Il prog. così modificto dovrebbe funzionare , no l'ho provato.
Bye