Oppure

Loading
20/01/10 20:23
spaho
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++:


#include<iostream.h>
#include<conio.h>
#include<windows.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#define k 5
main()
{
typedef char stringa[20];
stringa a[k];
int i,j;
for(i=0;i<k;i++)
{
cout<<"inserisci il  "<<i<<" nome :";
cin>>a[i];
}
for(j=0;j<k;j++)
{

i=rand()%5;
cout<<"\n"<<a[i];
Sleep(1000);
}
getch();
}



EDIT by HeDo: Leggi il regolamento, il codice si racchiude tra i tag code
Ultima modifica effettuata da HeDo 21/01/10 1:59
aaa
20/01/10 20:36
nessuno
Devi usare la srand per inizializzare il generatore ... leggi la documentazione

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à.
20/01/10 20:39
Poggi Marco
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 pierotofy.it/pages/guide_tutorials/CPlusPlus/Numeri_Casuali/
Ultima modifica effettuata da Poggi Marco 20/01/10 21:06
aaa
20/01/10 23:31
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
using namespace std;

Sbagli a salvare la stringa nel vettore di stringhe cin>>a; dovrebbe essere così
cin >> a[i];

La sleep, io l'ho sempre scritta in così
_sleep(1000);
forse è lo stesso ma non ne sono sicuro, altra cosa: la
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:
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 20/01/10 23:36
aaa
21/01/10 12:25
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++.
aaa
21/01/10 14:17
nessuno
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 ...

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à.
21/01/10 14:53
spaho
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
aaa
21/01/10 14:58
spaho
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
using namespace std;

Sbagli a salvare la stringa nel vettore di stringhe cin>>a; dovrebbe essere così
cin >> a[i];

La sleep, io l'ho sempre scritta in così
_sleep(1000);
forse è lo stesso ma non ne sono sicuro, altra cosa: la
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:
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 .
getch();}
serve per non chiudere la finestra e funziona e bsiogna utilizzare la libreria
<conio.h>

aaa