PDA

Visualizza la versione completa : [C++] Ciclo do-while e inserimento elementi in vettore


bovy
27-11-2006, 20:27
devo inserire degli elementi in un vettore e il ciclo di inserimento finisce quando l'utente digita 0, volevo sapere xke fatto così non mi funziona. potete correggermelo grazie

do{

cout <<"Inserisci un numero numero" << endl;
cin >> vett[indice];

indice++;


}while(vett[indice]>0);

vetto89
27-11-2006, 20:30
non va perchè controlli la posizione successiva avendo incrementato prima l'indice!!
quindi } while(vett[indice-1]!=0);

Samuele_70
27-11-2006, 20:38
Originariamente inviato da bovy
devo inserire degli elementi in un vettore e il ciclo di inserimento finisce quando l'utente digita 0, volevo sapere xke fatto così non mi funziona. potete correggermelo grazie

do{

cout <<"Inserisci un numero numero" << endl;
cin >> vett[indice];

indice++;


}while(vett[indice]>0);
Perchè assegni il valore a vett[indice] , incrementi la variabile-indice
e quindi esegui il controllo sull'elemento del vettore successivo non
ancora assegnato ( che può, quindi, contenere qualsiasi valore).

Modificalo così


do{
cout <<"Inserisci un numero numero" << endl;
cin >> vett[indice];
}while(vett[indice++]>0);

Così prima effettui il controllo e poi incrementi l'indice.

Opss. :stordita:

bovy
27-11-2006, 20:40
grazie mille...
adesso però non mi fa più quello che deve fare, perchè se metto 10 e 5 come elementi del vettore mi dice massimo 10 minimo 0 e media 4

#include <iostream.h>

main()
{
int max; //Numero più grande
int min; //Numero più piccolo
int media; //media dei numeri
int somma; //somma dei numeri
int vett[100]; //Vettore
int size; //Grandezza vettore
int cont; //Contatore
int indice; //Contatore
int i; //Contatore
int num;

//Inizializzazione variabili
max = 0;
min = 1000;
media = 0;
somma = 0;
cont = 0;
indice = 0;

//Fine Inizializzazione

do{

cout <<"Inserisci un numero numero" << endl;
cin >> vett[indice];

indice++;


} while(vett[indice-1]!=0);

for(cont = 0; cont<indice; cont++)
{
if(vett[cont] > max)
{
max = vett[cont];
if(vett[cont] < min)
{
min = vett[cont];
}
} else {
if(vett[cont] < min)
{
min = vett[cont];
}
}
}

size = indice;

for(i=0; i < size; i++)
{
somma = somma + vett[i];
}

media = (somma - 1)/size;

cout << "Il numero maggiore è:" << max << endl;
cout << "Il numero minore è:" << min << endl;
cout << "La media è:" << media << endl;

getchar();
getchar();

}

bovy
27-11-2006, 20:43
mi potreste dire x favore xke non fa quello che dovrebbe? grazie

Samuele_70
27-11-2006, 21:02
#include <iostream>

using namespace std;

int main()
{
int max; //Numero più grande
int min; //Numero più piccolo
int media; //media dei numeri
int somma; //somma dei numeri
int vett[100]; //Vettore
int indice = 0; //Contatore
int i; //Contatore
int num;

do
{
cout<<"Inserisci un numero numero : ";
cin>>vett[indice];
}
while( vett[indice++]!=0 && indice<100);

indice--;
if( indice>0 )
{
min=vett[0];
max=min;
somma = 0;

for( i=0; i<indice; i++)
{
if(vett[i] > max)
max = vett[i];
if(vett[i] < min)
min = vett[i];
somma = somma + vett[i];
}

media = somma/indice;

cout<<"Il numero maggiore e' : "<<max<<endl;
cout<<" Il numero minore e' : "<<min<<endl;
cout<<" La media e' : "<<media<<endl;
}
else
cout<<"Nessun valore inserito"<<endl;

getchar();
getchar();
return 0;
}

bovy
27-11-2006, 21:07
cosa significa indice--; ??

Samuele_70
27-11-2006, 21:18
Originariamente inviato da bovy
cosa significa indice--; ??
Decrementa la variabile indice, così da non considerare il valore 0, che non è un
valore ma la condizione di uscita dal ciclo.
Aspetta ho notato un possibile bug.
Nell' eventualità dell'inserimento di 100 elementi ( da tastiera :argo: ) il contatore
non andrebbe decrementato.
Sostituisci la riga :


indice--;

con


if(indice<100)
indice--;


Ciao.

Lak3d
27-11-2006, 21:23
che poi se usi <= nel ciclo for va decrementato di 2 visto che va scartato l'incremento così come lo 0...

size e num che le usi a fare? hai dichiarato una quantità inutile di variabili...

Samuele_70
27-11-2006, 21:29
Originariamente inviato da Lak3d
che poi se usi <= nel ciclo for va decrementato di 2 visto che va scartato l'incremento così come lo 0...

Ma dove lo hai visto il <= :confused:

Loading