PROBLEMA Aiuto Array in C++

Pubblicità

dyn4mic

Nuovo Utente
Messaggi
54
Reazioni
2
Punteggio
26
Salve a tutti ho da poco iniziato la programmazione in C++ ...
ho un problema con il seguente programma, in pratica devo fare la media di n elementi contenuti in un array.
il programma si avvia, il problema è che mi chiede sempre "Immetti numero: " come se la variabile " n " fosse infinita.
come posso risolvere? grazie

Codice:
#include <iostream>
#include <stdlib.h>
using namespace std;
class Vettore {
        private:
        int* V;
        int n;
        public:
            Vettore(int n);
            void nele();
            void memo();
            void stampa();
            void media();
        };
Vettore::Vettore(int n){
    V=new int[n];
    }
void Vettore::nele(){
    int n;
    cout<<"immetti numero elementi"<<"\n";
    cin>>n;
}
void Vettore::memo(){
    int i;
    for(i=0;i<n;i++){
        cout<<"Immetti numero: ";
        cin>>V[i];
    }
}
void Vettore::stampa(){
    int i;
    for(i=0;i<n;i++){
        cout<<V[i]<<"\n";
    }
}
void Vettore::media(){
    int i, s=0, m;
    for(i=0;i<n;i++){
        s=s+V[i];    
    }
    m=s/n;
    cout<<m<<"\n";
}
int main(){
    int n;    
    Vettore V1 = Vettore(n);
    V1.nele();
    cout<<"Memorizzazione vettore"<<"\n";
    V1.memo();
    cout<<"Visualizzazione vettore"<<"\n";
    V1.stampa();
    system("pause");
    return 0;
}
 
Ultima modifica:
ripensa completamente il codice ed evita tutti quei void. fallo tutto nel main...
purtroppo la nostra prof ci dice di farlo così, non posso fare tutto nel main...
sto provando ma non ci riesco proprio, mi potresti aiutare gentilmente?
gli arrey in c++ sono un argomento nuovo per me e la mia prof non spiega.
 
sono anni che programmo c++ c# vb.net qt ecc... fatto in quel modo li fa schifo... nel main chiedi il dato, fai cin e lo passi alla void insieme all'indice n e lo memorizza, poi passi al secondo numero e cosi' via... al limite puoi passare al void anche il vettore tramite puntatore...

cmq pierotofy spiega molto bene queste cose... cercalo su google
 
si me ne sono accorto anche io che in quel modo fa pena.
la prof ci ha dato un esempio ed è fatto proprio così...
su pierotofy in tutorial -> c++ mi dice che è offline

uff non ci riesco :(
 
@dyn4mic
L'errore è qui:
Codice:
void Vettore::nele(){    int n;    cout<<"immetti numero elementi"<<"\n";    cin>>n;}
Stai utilizzando una variabile automatica. Quando il costruttore crea l'array con gli elementi, utilizza come valore la "n" definita nelle variabili private della classe, non la "n" utilizza nella suddetta funzione.
Eliminando la dichiarazione di n nella funzione nele il programma funge. Comunque ti consiglio di utilizzare nomi per le funzioni più descrittive: aumenterai la leggibilità del codice per te e per chi lo legge. @barberino
Parliamo di C++ non C. Spero tu sappia le differenze. :rolleyes:
 
Grazie ho risolto, va bene il programma così strutturato ?

Codice:
#include <iostream>
#include <stdlib.h>
using namespace std;
class Vettore {
	private:
		int* V;
		int l;
		public:
			Vettore(int n);
			void memo();
			void stampa();
			void media();
		};
Vettore::Vettore(int n){
	V=new int[n];
	l=n;
	}


void Vettore::memo(){
	int i;
	for(i=0;i<l;i++){
		cout<<"Immetti "<<i+1<<" numero: ";
		cin>>V[i];
	}
}
void Vettore::stampa(){
	int i;
	for(i=0;i<l;i++){
		cout<<V[i]<<"\t";
	}
}
void Vettore::media(){
	int i, s=0, m;
	for(i=0;i<l;i++){
		s=s+V[i];	
	}
	m=s/l;
	cout<<m<<"\n";
}
int main(){
	int n;
	cout<<"Immetti numero elementi ";
	cin>>n;	
	Vettore V1 = Vettore(n);
	cout<<"\nMemorizzazione vettore"<<"\n\n";
	V1.memo();
	cout<<"\nVisualizzazione vettore"<<"\n\n";
	V1.stampa();
	cout<<"\n\nLa media e' ";
	V1.media();
	cout<<"\n\n";
	system("pause");
	return 0;
}
 
Beh io mi riferivo ai nomi delle funzioni, variabili.
Ad esempio la grandezza del vettore potrebbe chiamarsi size_array, magari qualificandola come costante.
Comunque ti consiglio di far verificare l'intero passato al costruttore. Per convenzione si usa endl anziché \n (stile C, ma nessuno ti vieta di utilizzare \n che in alcuni casi è utile):
Codice:
cout << "Inserisci valore: " << endl;
 
Pubblicità
Pubblicità
Indietro
Top