liogiu2 (Normal User)
Newbie
Messaggi: 11
Iscritto: 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++ |
//Tombola!! //---------------------------------------------------------------------------------- #include<stdio.h> #include<stdlib.h> #include<time.h> #define tom 90 int main() { int ne[tom],vet[tom]={0},num,k=0,j; srand(time(NULL)); do { printf("per Estrarre un numero premi 1\n"); printf(" per vedere i numeri estratti premi 2\n"); printf(" per uscire premi 0\n"); scanf("%d",&num); switch(num) { case 1: qui: ne[k]=rand()%90+1; for(j=0;j<k;j++) { if(ne[k]==vet[j]) { goto qui; ne[k]=0; } else vet[k]=ne[k]; } printf("Il %d numero estratto e'%d:\n",(k+1),ne[k]); k++; break; case 2: printf("ecco i numeri estratti:"); for(j=0;j<k;j++) printf("%d -- ",vet[j]); break; case 0: k=k+99; break; } } while(k<tom); system("pause"); return 0; }
|
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
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
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 |
|
liogiu2 (Normal User)
Newbie
Messaggi: 11
Iscritto: 19/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...
|
|
Linkinf22 (Normal User)
Rookie
Messaggi: 59
Iscritto: 28/06/2009
|
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
|
|
liogiu2 (Normal User)
Newbie
Messaggi: 11
Iscritto: 19/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
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
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 |
|
liogiu2 (Normal User)
Newbie
Messaggi: 11
Iscritto: 19/12/2010
|
Grazie del vostro aiuto...ho finito.
Si può chiudere
|
|
Alex (Ex-Member)
Expert
Messaggi: 441
Iscritto: 15/08/2005
|
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 |
for(int i=0;i<tom && ne[i]!=0;i++)
printf("\t %d",ne[i]);
|
prima però devi cancellare lo schermo...
Codice sorgente - presumibilmente C/C++ |
se sei su windows
Codice sorgente - presumibilmente Plain Text |
se sei su unix
Codice sorgente - presumibilmente Plain Text |
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
In questo modo:
Codice sorgente - presumibilmente C++ |
int LCOL = 10; int j; int i = 0; int s; for(j = 0; j < 20; j++) { if(i % LCOL == 0) { printf("\n"); for(s = 0; s < LCOL; s++) printf("-----"); printf("\n"); } printf(" %02d |", vett[j]); i++; } printf("\n"); for(s = 0; s < LCOL; s++) printf("-----"); printf("\n");
|
cambiando il valore di LCOL la tabella si adatterà in automatico
|
|