salve, vi scrivo dopo diversi tentativi e diversi approcci che sono falliti,
quindi ho deciso di chiedervi un aiuto.
avrei da scrivere 2 programmi,
il primo deve far scegliere al pc tramite un randomize(), un numero da 0 compreso a 999 compreso
e bisogna inserire da tastiera dei tentativi per indovinarlo, ( lui dovrà ''risponderti'' se il numero inserito è maggiore o minore del numero ''segreto'' scelto dal pc)
il secondo programma invece dovrà agire da ''suggeritore'' per noi, ovvero riuscire ad indovinare nel minor numero di tentativi il numero ''segreto '' scelto dal pc.
il programma ''suggeritore'' l'ho fatto secondo la mia teoria ''dei paletti'' ovvero: considero l'ultimo numero che ho inserito nel primo come un ''paletto'' per capire se il numero segreto è maggiore o minore del numero segreto
ovvero: nel primo programma come primo valore inserisco sempre 500, per capire se è compreso da 0 a 500, oppure da 500 a 999.
questo è il primo ''paletto''
nel secondo programma inserisco questo fatto ( se lo andate a leggere, capirete), ovvero se è maggiore di 500, e mi deve dare un secondo valore
es: nel primo programma dice che il numero è maggiore di 500,
allora nel secondo scrivo 'M' ( maggiore) e mi deve dare un valore compreso da 500 a 999, tipo 687 ( a caso)
questo dovrebbe funzionare anche al contrario, se è minore id 500 mi dovrebbe scegliere a caso un numero compreso da 0 a 500 tipo, 245.
fatto sta che per le prime righe ( nel secondo programma) la cosa funziona, ma dopo mi da solo i casi ''m'' ovvero mi da solo valori minori, come se non considerasse la condizione IF prima del ElSe
qualche suggerimento?
QUESTO è IL PRIMO PROGRAMMA CHE GIRA BENE:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <math.h>
void main ()
{
int n, a=0, b=0, c=0, d=0, e=0, tentativo, numero_segreto, punteggio;
printf ("### PROGRAMMA BY DEXTER ###");
printf ("\n**************************");
printf ("\n\n########## INDOVINA IL NUMERO ######### ");
printf ("\n########################################### ");
printf ("\n\n HO SCELTO UN NUMERO da 0..999");
randomize();
numero_segreto=random(1000);
for ( n=0; n<10 ; n=n+1)
{
do
{
printf ("\n\n inserisci un tentativo : ");
scanf ("%d" , &tentativo);
if ( tentativo > 999 || tentativo < 0 )
{
printf (" inserisci un numero nel range!! 0..999");
}
} while ( tentativo > 999 && tentativo <0 ); // fine while
if ( tentativo > numero_segreto )
{
printf ("\n **il numero e grande, prova uno piu piccolo");
a=a+1;
}
else if ( tentativo < numero_segreto)
{
printf (" \n **il numero e piccolo, prova uno piu grande");
b=b+1;
}
else if ( (tentativo-numero_segreto)==1 )
{
printf (" \n **SEI VICINISSIMO, ma e ancora grande!");
d=d+1;
}
else if ( (numero_segreto-tentativo)==1 )
{
printf ("\n **SEI VICINISSIMO, ma e ancora piccolo!");
e=e+1;
}
else if ( tentativo==numero_segreto)
{
printf ("\n***********************");
printf ("\n\n ***HAI INDOVINATO!!***");
printf ("\n***********************");
c=c+1;
break;
}
}// fine FOr
punteggio = (a+b+c+d+e);
printf ("\n*******************************");
printf ("\n\n hai fatto : %d tentativi ", punteggio );
getch ();
}// fine main
QUESTO INVECE è IL PROGRAMMA ''SUGGERITORE'' ( beh il mio tentativo)
codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <math.h>
void main ()
{
int scelta,scelta2,scelta3,scelta4, maggiore, minore, paletto1, paletto2, paletto3, paletto4 ;
printf ("\n il tuo valore e minore o Maggiore di 500? M/m : ");
scanf ("%c", &scelta);
getche();
if ( scelta=='M')
{
randomize();
paletto1= 501+(random(499));
printf ("\n\n se e maggiore potrebbe essere :");
}
else
{
randomize();
paletto1=random(500);
printf ("\n\n se e minore potrebbe essere : %d", paletto1);
}
///////////////////////////////////////////////////////////////////////////
printf (" \n\n il numero e Maggiore o minore di %d , M/m : ", paletto1);
scanf ("%c", &scelta2);
getche();
if ( scelta2=='M')
{
randomize();
paletto2= paletto1+ (random((999-paletto1+1)));
printf ("\n\n se e maggiore potrebbe essere : %d", paletto2);
}
else
{
randomize();
paletto2=random(paletto1);
printf ("\n\n se e minore potrebbe essere : %d", paletto2);
}
///////////////////////////////////////////////////////////////////////
printf (" \n\n il numero e Maggiore o minore di %d , M/m : ", paletto2);
scanf ("%c", &scelta3);
getche();
if ( scelta3== 'M')
{
randomize ();
paletto3= paletto2+(random(999-paletto2+1));
printf("\n\n se e maggiore potrebbe essere : %d", paletto3);
}
else
{
randomize();
paletto3=random(paletto2);
printf("\n\n se e minore potrebbe essere : %d" ,paletto3);
}
////////////////////////////////////////////////////////////////////////
printf (" \n\n il numero e Maggiore o minore di : %d , M/m", paletto3);
scanf ("%c", &scelta4);
getche();
if ( scelta4== 'M')
{
randomize ();
paletto4= paletto3+(random(999-paletto3+1));
printf("\n\n se e maggiore potrebbe essere : %d", paletto4);
}
else
{
randomize();
paletto4=random(paletto3);
printf("\n\n se e minore potrebbe essere : %d", paletto4);
}
getch();
}