PDA

Visualizza la versione completa : [ C ] 2 programmi per indovinare il numero SEGRETO


dexter94
08-01-2014, 21:18
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:



#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)



#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();
}

vbextreme
08-01-2014, 21:55
ma [ c o d e ] Ŕ andato fuori moda [ / c o d e ]

perchŔ usare due programmi distinti?

dexter94
08-01-2014, 21:59
Ŕ la consegna che il prof ci ha dato, comunque Ŕ solo un mio tentativo per svolgerlo, ovvimanete ce ne saranno mille altri

postami pure, la tua soluzione in un programma unico ;)

Alex'87
08-01-2014, 22:01
ma [ c o d e ] Ŕ andato fuori moda [ / c o d e ]

In realtÓ quel codice pare non indentato in partenza, il tag code sarebbe inutile :stordita:


perchŔ usare due programmi distinti?
Dal titolo immagivano si trattasse di due processi separati che interagivano per trovare la soluzione :confused:

Messa cosý non ne capisco il senso... :confused:

dexter94
08-01-2014, 22:03
il programma Ŕ indentato benissimo, ho fatto copia / incolla per postare qui il programma scusate se sono sembrato un incompetente,

comunque l'ho scritto prima, NEL primo programma il pc sceglie il numero, e si possono fare tentativi a ''mano'' usando la testa,
il secondo servirebbe appunto a trovare il numero scelto dal pc in pochissimo tentativi ( meno dei 10 proposti da me)


comunque se vi sembrano indentati male ( perchŔ dal copia / incolla Ŕ cosi), potrei farvi uno screen shot non so..

vbextreme
08-01-2014, 22:25
basterebbe metterlo nell'apposito tag code. caspita! secondo te perchŔ l'hanno inventato?
Ma il prof ha detto che vuole de programmi distinti oppure no?


postami pure, la tua soluzione in un programma unico
:prrr: ti piacerebbe....

dexter94
08-01-2014, 22:27
scusatemi, mi sono inscritto 5 minuti fa, e pensavo ci fosse un ''pulsante '' apposito, ma non ho trovato quale ( quale sarebbe?)

si sono 2 programmi distinti che faccio girare in parallelo

vbextreme
08-01-2014, 22:50
modalitÓ avanzata tasto #
TAG [ C O D E ] [ / C O D E ]
ho capito che hai fatto 2 programmi,ma Ŕ una tua iniziativa oppure l'ha chiesto esplicitamente il supremo ':old:

dexter94
08-01-2014, 22:58
u.u il supremo yoda

comunque volevo solo chiederci se riuscite a capire perchŔ nella seconda parte ( il secondo programma) dopo aver scelto se Ŕ maggiore o minore di 500, le altre le fÓ senza tenere conto del ''IF'' che contiene le instruzioni per dare un numero maggiore, se io lo richiedo)

vbextreme
09-01-2014, 06:47
Penso che il tuo problema maggiore sia l'utizzare dev-c++ che Ŕ gia di suo una schifezza,se poi tenti di usare la funzione di borland in mingw hai fatto bingo.
Perci˛ fase 1 installati CODE::BLOCKS. (http://www.codeblocks.org/)

Loading