ciottano
29-07-2008, 15:10
Salve a tutti.
Ho un problema con i vettori in C++.
Ho scritto questo programmino che riempie un vettore lungo n, lo ordina e ne mostra a schermo gli elementi.
Compila senza errori. Lanciandolo mi fa riempire il vettore ma poi mi crasha.
Se invece di dichiarare un vettore generico ne dichiaro uno di lunghezza prefissata va tutto liscio.
Uso Dev sotto WinXP.
Riporto sotto il codice.
Ciao,
G.#include <iostream>
#include <vector>
using namespace std;
//funzione per riecmpire il vettore
void carica(int n,vector<int> v){
//void carica(int n,int v[]){
int i;
int prova;
cout<<"inserire i voti"<<endl;
for(i=0;i<n;i++) {
cin>>prova;
v.push_back(prova);
}
}
//funzione per ordinare gli elementi del vettore
//void ordina(int n,int v[]){
void ordina(int n,vector<int> v){
int i,j;
int temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++){
if(v[i]>v[j]){
temp=v[i];
v[i]=v[j];
v[j]=temp;
}
}
}
int main(){
//int voti[10];
vector<int> voti;
int n;
int j;
int m;
float med;
float somma=0;
cout<<"inserire numero voti"<<endl;
cin>> n;
carica(n,voti);
ordina(n,voti);
for(j=0;j<n;j++) cout<<"voti "<<voti[j]<<endl;
//for(m=1;m<9;m++)
for(m=1;m<n-1;m++) somma=voti[m]+somma;
med=somma/(n-2);
cout<<"la media e' "<<med<<endl;
system("pause");
}
Ho un problema con i vettori in C++.
Ho scritto questo programmino che riempie un vettore lungo n, lo ordina e ne mostra a schermo gli elementi.
Compila senza errori. Lanciandolo mi fa riempire il vettore ma poi mi crasha.
Se invece di dichiarare un vettore generico ne dichiaro uno di lunghezza prefissata va tutto liscio.
Uso Dev sotto WinXP.
Riporto sotto il codice.
Ciao,
G.#include <iostream>
#include <vector>
using namespace std;
//funzione per riecmpire il vettore
void carica(int n,vector<int> v){
//void carica(int n,int v[]){
int i;
int prova;
cout<<"inserire i voti"<<endl;
for(i=0;i<n;i++) {
cin>>prova;
v.push_back(prova);
}
}
//funzione per ordinare gli elementi del vettore
//void ordina(int n,int v[]){
void ordina(int n,vector<int> v){
int i,j;
int temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++){
if(v[i]>v[j]){
temp=v[i];
v[i]=v[j];
v[j]=temp;
}
}
}
int main(){
//int voti[10];
vector<int> voti;
int n;
int j;
int m;
float med;
float somma=0;
cout<<"inserire numero voti"<<endl;
cin>> n;
carica(n,voti);
ordina(n,voti);
for(j=0;j<n;j++) cout<<"voti "<<voti[j]<<endl;
//for(m=1;m<9;m++)
for(m=1;m<n-1;m++) somma=voti[m]+somma;
med=somma/(n-2);
cout<<"la media e' "<<med<<endl;
system("pause");
}