Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - come posso fare per fare visualizzare i numeri usciti in caselle specifiche in un programma di tombola??
Forum - C/C++ - come posso fare per fare visualizzare i numeri usciti in caselle specifiche in un programma di tombola??

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
liogiu2 (Normal User)
Newbie


Messaggi: 11
Iscritto: 19/12/2010

Segnala al moderatore
Postato alle 19:16
Domenica, 19/12/2010
La domanda dice diciamo tutto..io sono nuovo in questo linguaggio e diciamo alla programmazione e dato che studio con la scuola e qui non si approfondisce troppo io invece vorrei approfondire
Questo è il programma che ho fatto:
Codice sorgente - presumibilmente C++

  1. //Tombola!!
  2. //----------------------------------------------------------------------------------
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<time.h>
  6. #define tom 90
  7. int main()
  8. {
  9.     int ne[tom],vet[tom]={0},num,k=0,j;
  10.     srand(time(NULL));
  11.     do
  12.     {
  13.         printf("per Estrarre un numero premi 1\n");
  14.         printf(" per vedere i numeri estratti premi 2\n");
  15.         printf(" per uscire premi 0\n");
  16.         scanf("%d",&num);
  17.         switch(num)
  18.         {
  19.                    case 1:  
  20.                         qui:          
  21.                         ne[k]=rand()%90+1;
  22.                          for(j=0;j<k;j++)
  23.                          {
  24.                                          if(ne[k]==vet[j])
  25.                                          {
  26.                                                      goto qui;
  27.                                                      ne[k]=0;
  28.                                          }
  29.                                          else
  30.                                                      vet[k]=ne[k];
  31.                          }
  32.                          printf("Il %d numero estratto e'%d:\n",(k+1),ne[k]);
  33.                          k++;
  34.                          break;
  35.                    case 2:
  36.                         printf("ecco i numeri estratti:");
  37.                         for(j=0;j<k;j++)
  38.                                         printf("%d -- ",vet[j]);
  39.                         break;
  40.                    case 0:
  41.                         k=k+99;
  42.                         break;
  43.         }
  44.     }          
  45.     while(k<tom);                                  
  46.    
  47.    
  48.     system("pause");
  49.     return 0;
  50.    
  51. }


Adesso mi potreste dare consigli per come fare a fare il tabellone di controllo dei numeri usciti e perchè quando clicco 2 come primo numero mi da 0 ??
grazie in anticipo:hail:

PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
2
Down
V
Segnala al moderatore
Postato alle 9:18
Lunedì, 20/12/2010
ragazzi, se dovete dare una risposta almeno non datela a casaccio.

1)la sintassi OVVIAMENTE è system("cls"); dico OVVIAMENTE perché cls è una stringa e le stringhe sono racchiuse da doppi apici. Basterebbe ragionare prima di scrivere.

2)l'header da includere è stdlib.h, che come saprete sicuramente non è una libreria...
Anche per questo, un minimo di ragionamento: anche non sapendo nulla della funzione system, il terzo risultato di google (con ricerca "system C") dice nella prima riga il nome dell'header da includere.

3)iostream.h è un header del C++, non del C; inoltre, anche in ambito C++, oramai è deprecato in favore di <iostream> del namespace std

Ultima modifica effettuata da lorenzo il 20/12/2010 alle 9:19
PM
Avatar
liogiu2 (Normal User)
Newbie


Messaggi: 11
Iscritto: 19/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 8:27
Lunedì, 20/12/2010
Grazie alex...solo che mi dice che la libreria non c'è e poi mi da errori su il codice per pulire lo schermo...:d

PM
Avatar
Linkinf22 (Normal User)
Rookie


Messaggi: 59
Iscritto: 28/06/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 8:58
Lunedì, 20/12/2010
Per il system("cls"); hai provato a mettere #include <iostream.h>?
Tra l' altro il cls mi sembra che non vada tra apici come fatto da Alex: system('cls');
Ma mi pare che vada tra doppi apici: system("cls");

Prova prima a mettere i doppi apici, se ancora non funziona prova ad includere la libreria iostream.h

PM
Avatar
liogiu2 (Normal User)
Newbie


Messaggi: 11
Iscritto: 19/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 9:54
Lunedì, 20/12/2010
Abbiamo risolto il problema della pulizia dello schermo.
Ora come da titolo: come posso fare quando scrivo 2 a far vedere una vera e propria tabella con i numeri 1 alla 1° casella, 2 alla 2° casella e via dicendo?
e grazie mille per i consigli di prima :D

PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 11:05
Lunedì, 20/12/2010
ho come il sospetto che non ci siamo....

1) LCOL non è una funzione, è una semplice variabile di controllo che serve a decidere quante colonne stampare.

Mettendo novanta tu stampi tutte i novanta numeri su una sola riga....

2) nel ciclo for j < 20 era un mio test, tu devi mettere la lunghezza del vettore (tom)

3) in C ANSI non puoi dichiarare delle variabili nel case di uno switch. Devi dichiararle insieme alle altre altrimenti da errore.


Ora passiamo ai consigli:

1) non usare MAI E POI MAI un goto...ci sono modi molto più puliti per fare la stessa cosa.
2) STUDIA prima di scrivere codice. Non si può scambiare una variabile per una funzione....
3) prima di chiedere aiuto, prova a risolvere da solo gli errori....
4) Ti ho scritto il codice perché speravo cercassi di capirlo, invece l'hai semplicemente copiato e incollato. Poiché che darti altro codice sarebbe inutile, visto l'andazzo, non scriverò più un'istruzione...

Ultima modifica effettuata da lorenzo il 20/12/2010 alle 11:07
PM
Avatar
liogiu2 (Normal User)
Newbie


Messaggi: 11
Iscritto: 19/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 12:19
Lunedì, 20/12/2010
Grazie del vostro aiuto...ho finito.
Si può chiudere

PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
-1
Down
V
Segnala al moderatore
Postato alle 21:58
Domenica, 19/12/2010
per fare il tabellone puoi stampare un pò alla volta i numeri estratti..
se ho ben capito dal codice il vettore "ne" contiene i numeri estratti.(correggimi se sbaglio)
quindi fai cosi:
Codice sorgente - presumibilmente Plain Text

  1. for(int i=0;i<tom && ne[i]!=0;i++)
  2.     printf("\t %d",ne[i]);


prima però devi cancellare lo schermo...
Codice sorgente - presumibilmente C/C++

  1. #include <system.h>


se sei su windows
Codice sorgente - presumibilmente Plain Text

  1. system('cls');


se sei su unix
Codice sorgente - presumibilmente Plain Text

  1. system('clear');



PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
-1
Down
V
Segnala al moderatore
Postato alle 10:26
Lunedì, 20/12/2010
In questo modo:

Codice sorgente - presumibilmente C++

  1. int LCOL = 10;
  2.         int j;
  3.         int i = 0;
  4.         int s;
  5.        
  6.         for(j = 0; j < 20; j++)
  7.         {
  8.                 if(i % LCOL == 0)
  9.                 {
  10.                         printf("\n");
  11.                         for(s = 0; s < LCOL; s++)
  12.                                 printf("-----");
  13.                         printf("\n");
  14.                 }
  15.                 printf(" %02d |", vett[j]);
  16.                 i++;
  17.         }
  18.         printf("\n");
  19.         for(s = 0; s < LCOL; s++)
  20.                 printf("-----");
  21.         printf("\n");



cambiando il valore di LCOL la tabella si adatterà in automatico

PM
Pagine: [ 1 2 ] Precedente | Prossimo