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++ - problema rand ()
Forum - C/C++ - problema rand ()

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


Messaggi: 7
Iscritto: 13/01/2010

Segnala al moderatore
Postato alle 21:23
Mercoledì, 20/01/2010
il seguente prog. in c++ chiede all' utente di inserire nomi di alunni .. e con la funzione rand estrae qll ke devono essere inerrogati ..il problema e ke delle volte estrae gli stessi nomi ..volevo sapere se esiste un modo per estrarre nomi o numeri sempre diversi  
ECCO LA SORGENTE IN C++:

Codice sorgente - presumibilmente C++

  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<windows.h>
  4. #include<string.h>
  5. #include<stdlib.h>
  6. #include<stdio.h>
  7. #define k 5
  8. main()
  9. {
  10. typedef char stringa[20];
  11. stringa a[k];
  12. int i,j;
  13. for(i=0;i<k;i++)
  14. {
  15. cout<<"inserisci il  "<<i<<" nome :";
  16. cin>>a[i];
  17. }
  18. for(j=0;j<k;j++)
  19. {
  20.  
  21. i=rand()%5;
  22. cout<<"\n"<<a[i];
  23. Sleep(1000);
  24. }
  25. getch();
  26. }



EDIT by HeDo: Leggi il regolamento, il codice si racchiude tra i tag code

Ultima modifica effettuata da HeDo il 21/01/2010 alle 2:59
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:36
Mercoledì, 20/01/2010
Devi usare la srand per inizializzare il generatore ... leggi la documentazione

http://www.cplusplus.com/reference/clibrary/cstdlib/srand/


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 21:39
Mercoledì, 20/01/2010
Ciao!

Per risolvere il problema, basta spostare nell' array i noni già estratti, in modo da poter compiere la scelta successiva sui nomi non estratti.

Inoltre visita il tutorial http://www.pierotofy.it/pages/guide_tutorials/CPlusPlus/Nu ...

Ultima modifica effettuata da Poggi Marco il 20/01/2010 alle 22:06
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 0:31
Giovedì, 21/01/2010
Ma stai creando un programma in C o C++?
A che ti servono tutte quelle librerie!?
Comunque, ci sono un bel pò di errori nel tuo programmino.
A partire che manca la
Codice sorgente - presumibilmente C/C++

  1. using namespace std;


Sbagli a salvare la stringa nel vettore di stringhe cin>>a; dovrebbe essere così
Codice sorgente - presumibilmente Plain Text

  1. cin >> a[i];


La sleep, io l'ho sempre scritta in così
Codice sorgente - presumibilmente Plain Text

  1. _sleep(1000);

forse è lo stesso ma non ne sono sicuro, altra cosa: la
Codice sorgente - presumibilmente Plain Text

  1. getch();

che funzione è!? Che io sappia c'è solo la getc(); o getchar(); però se ti serve su windows per bloccare la schermata allora c'è la funzione:
Codice sorgente - presumibilmente Plain Text

  1. system("pause");


Ma già che ci sei perchè non usi le classi del C++? Ad esempio la classe string, invece di dichiarare array di char come in C.

Ultima modifica effettuata da Lawliet il 21/01/2010 alle 0:36
PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 13:25
Giovedì, 21/01/2010
Quoto Lawliet, è un po' un disastro: innanzitutto come include basta <iostream>, <cstdlib>, <string> TUTTI SENZA .H. Tu hai incluso conio, windows, stdio ma non hanno senso, perché non servono, stdio ancora peggio è di C, non C++, in C++ devi chiamarla cstdio, ma non farlo, perché in iostream ci sono tutte le classi che ti servono, poi hai incluso string, ma se poi usi un array di char, che si usa in C, non C++, non serve a nulla.
E una volta incluse le librerie necessarie: use namespace std. Poi quella dichiarazione typedef char stringa[20] non ha senso se poi fai una "stringa" di 5.
Stesso consiglio: un bel LIBRO di C++.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:17
Giovedì, 21/01/2010
Testo quotato

Postato originariamente da gio97:

...

E una volta incluse le librerie necessarie



Con gli #include non si "includono librerie" ma i file header ... e c'è differenza ...

Testo quotato

un bel LIBRO di C++.



Per questo basta anche un libro di C ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
spaho (Normal User)
Newbie


Messaggi: 7
Iscritto: 13/01/2010

Segnala al moderatore
Postato alle 15:53
Giovedì, 21/01/2010
Testo quotato

Postato originariamente da gio97:

Quoto Lawliet, è un po' un disastro: innanzitutto come include basta <iostream>, <cstdlib>, <string> TUTTI SENZA .H. Tu hai incluso conio, windows, stdio ma non hanno senso, perché non servono, stdio ancora peggio è di C, non C++, in C++ devi chiamarla cstdio, ma non farlo, perché in iostream ci sono tutte le classi che ti servono, poi hai incluso string, ma se poi usi un array di char, che si usa in C, non C++, non serve a nulla.
E una volta incluse le librerie necessarie: use namespace std. Poi quella dichiarazione typedef char stringa[20] non ha senso se poi fai una "stringa" di 5.
Stesso consiglio: un bel LIBRO di C++.



<iostream.h> serve x il cin e il cout (se nn ci credi prova)....<string.h> serve x usare la funzione typedef char (senza questa funzione  e la libreia <string.h> con il c++ non puoi usare le stringhe)..il .h il mio prof. mi ha insegnato ke ci vuole ...(use name space std non e' indispensabile )....typedef char stringa[20] serve per dichiarare quanti caratteri si possono utilizzare ..e nn faccio una stringa di 5 ..(stringa a[k]..è un vettore )
un bel LIBRO di C++..serve a te ...e anke uno di educazione

PM Quote
Avatar
spaho (Normal User)
Newbie


Messaggi: 7
Iscritto: 13/01/2010

Segnala al moderatore
Postato alle 15:58
Giovedì, 21/01/2010
Testo quotato

Postato originariamente da Lawliet:

Ma stai creando un programma in C o C++?
A che ti servono tutte quelle librerie!?
Comunque, ci sono un bel pò di errori nel tuo programmino.
A partire che manca la
Codice sorgente - presumibilmente C/C++

  1. using namespace std;


Sbagli a salvare la stringa nel vettore di stringhe cin>>a; dovrebbe essere così
Codice sorgente - presumibilmente Plain Text

  1. cin >> a[i];


La sleep, io l'ho sempre scritta in così
Codice sorgente - presumibilmente Plain Text

  1. _sleep(1000);

forse è lo stesso ma non ne sono sicuro, altra cosa: la
Codice sorgente - presumibilmente Plain Text

  1. getch();

che funzione è!? Che io sappia c'è solo la getc(); o getchar(); però se ti serve su windows per bloccare la schermata allora c'è la funzione:
Codice sorgente - presumibilmente Plain Text

  1. system("pause");


Ma già che ci sei perchè non usi le classi del C++? Ad esempio la classe string, invece di dichiarare array di char come in C.


Nel mio programmino nn ci sono errori fai copia e incolla sul borland e avvialo... NN DA ALCUN PROBLEMA .
lo sleep va bene sia come dici te ke come ho fatto io .
Codice sorgente - presumibilmente Plain Text

  1. getch();}

serve per non chiudere la finestra e funziona e bsiogna utilizzare la libreria
Codice sorgente - presumibilmente Plain Text

  1. <conio.h>



PM Quote
Avatar
spaho (Normal User)
Newbie


Messaggi: 7
Iscritto: 13/01/2010

Segnala al moderatore
Postato alle 15:59
Giovedì, 21/01/2010
Testo quotato

Postato originariamente da nessuno:

Devi usare la srand per inizializzare il generatore ... leggi la documentazione

http://www.cplusplus.com/reference/clibrary/cstdlib/srand/


Grazie Mille :k::k:

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo