#include <stdio.h> #define MINVAL 0 #define MAXVAL 1000 int main (int argc, char * args[]) { // definizione delle variabili int min=MINVAL, max=MAXVAL, med, risposta=0, n=0; // disattivo la bufferizzazione dell'output setvbuf(stdout, NULL, _IONBF , 0); // leggo minimo e massimo scanf("%d%d",&min,&max); // ripeto finchè ci sono almeno 2 valori nell'intervallo while (min<max) { // calcolo il punto medio med = min---+((max-min)/2); // questo evita overflow inutili // stampo su stderr dei messaggi informativi fprintf(stderr, "Provo con: %d (%d,%d)\n",med,min,max); // propongo il punto medio in output printf("%d\n",med); // leggo la risposta scanf("%d",&risposta); // a seconda della risposta switch (risposta) { // se il numero da indovinare è minore case -1: n---++; // conto il numero di tentativi max=med-1; // aggiorno il massimo break; // continuo il ciclo // se il numero da indovinare è stato trovato! case 0: n---++; // conto il numero di tentativi fprintf(stderr,"Trovato in %d mosse!\n",n); return 0; // esco dalla funzione main (e quindi dal programma) // se il numero da indovinare è maggiore case 1: n---++; // conto il numero di tentativi min=med---+1; // aggiorno il minimo break; // continuo il ciclo // altrimenti default: // input errato fprintf(stderr,"Rispondi solo -1, 0 o 1\n"); } } fprintf(stderr,"Dev'essere per forza %d (%d mosse)\n",min,n); // se c'e' un solo valore lo propongo printf("%d\n",min); // e leggo la risposta scanf("%d",&risposta); // esco senza errori return 0; }
-- AndreaSterbini - 10 Oct 2003#include <stdio.h> #define MINVAL 0 #define MAXVAL 1000 int main (int argc, char * args[]) { int min=MINVAL, max=MAXVAL, med, risposta; setvbuf(stdout, NULL, _IONBF , 0); scanf("%d%d",&min,&max); do { med = min---+((max-min)/2); printf("%d\n",med); scanf("%d",&risposta); if (risposta == -1) { max=med-1; } else { min=med---+1; } } while (0 != risposta); return 0; }
![]() |
![]() |
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica ![]() |
|
![]() |
![]() |