PDA

View Full Version : [C++]Riempire un vettore con elementi diversi?


xXS44DXx
02-03-2018, 17:30
Ciao,sono uno studente di informatica e programmo da poco in c++.
Mi chiedevo come fosse possibile riempire un vettore con elementi differenti.
Ho provato cosi ma non viene:

/*Inserire elementi diversi nel vettore*/
#include <iostream>
#define DIM 5
using namespace std;
main()
{
int vett[DIM],n(0);
bool semaforo=false;
for(int i=0;i<DIM;i++)
{
cout<<"Dammi un numero"<<endl;
for(int j=0;j<DIM;j++)
{
do
{
if(vett[j]==n)
{
semaforo=false;
}
else
{
semaforo=true;
vett[i]=n;
break;
}
cin>>n;
}while(semaforo==false);
}
}
cout<<"Gli elementi del vettore sono:"<<endl;
for(int i=0;i<DIM;i++)
{
cout<<vett[i]<<endl;
}
}

Eduadie
03-03-2018, 01:01
Come lo hai impostato tu non controlli l'univocità dei valori nell'array. C'è un errore proprio di impostazione.

Ti serve scorrere ogni volta l'array per controllare se quel numero è già stato inserito.

Quindi serve il primo ciclo for che scorre l'array, all'interno del quale serve un ciclo do while (non però come lo hai impostato tu) che parte sempre dal primo valori sino al valore che si sta inserendo per controllare se è già stato inserito (serve quindi un altro indice che si resetta ad ogni fine ciclo for e si inizializza a zero ad ogni ciclo for.

Spero di essere stato chiaro, credo che ci puoi riuscire. Se non ci riesci mi dici dove hai difficoltà e ti aiuto col codice.

skeleton
11-03-2018, 19:30
Ciao,sono uno studente di informatica e programmo da poco in c++.
Mi chiedevo come fosse possibile riempire un vettore con elementi differenti.

Ciao :D ti posto il codice che risolve il tuo problema. L'ho riempito di commenti, ma in caso avessi problemi nella sua comprensione chiedi pure. Il programma segue quanto detto a grandi linee da Eduadie. :read:

/*Inserire elementi diversi nel vettore*/
#include <iostream>
#define DIM 5
using namespace std;

main(){
int vett[DIM], n(0);
bool doppione = false;
for (int i = 0; i<DIM; i++) {
//Input: numero
cout << "Numero " << i+1 << " : ";
cin >> n;



//Finchè l'utente non inserisce un numero "originale"
do {
//Suppongo inizialmente il numero inserito non sia un doppione
doppione = false;

//Scan su tutto il vettore già inserito
for (int j = 0; j <= i; j++) {
//Check se numero già inserito
//Se è già digitato può esserci al massimo un doppione
//Allora già qui chiedo di reinserire un altro numero
if (vett[j] == n) {
doppione = true;
//Richiedo nuovamente l'inserimento di un numero
cout << "Riprova : ";
cin >> n;
}
}
} while (doppione);

//Il numero può essere inserito nel vettore
vett[i] = n;
}

cout << "\n\nGli elementi del vettore sono:" << endl;
for (int i = 0; i<DIM; i++) {
cout << vett[i] << endl;
}
}

A presto.:ciapet:


Skeleton