Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    14

    [ C ] 2 programmi per indovinare il numero SEGRETO

    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();
    }
    Ultima modifica di LeleFT; 09-01-2014 a 11:18 Motivo: Aggiunti i tag CODE

  2. #2
    ma [ c o d e ] è andato fuori moda [ / c o d e ]

    perchè usare due programmi distinti?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    14
    è 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

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da vbextreme Visualizza il messaggio
    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

    Quote Originariamente inviata da vbextreme Visualizza il messaggio
    perchè usare due programmi distinti?
    Dal titolo immagivano si trattasse di due processi separati che interagivano per trovare la soluzione

    Messa così non ne capisco il senso...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    14
    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..
    Ultima modifica di dexter94; 08-01-2014 a 23:08

  6. #6
    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
    ti piacerebbe....
    Ultima modifica di vbextreme; 08-01-2014 a 23:31

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    14
    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

  8. #8
    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 '

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    14
    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)

  10. #10
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.