Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con vectores c++

Estas en el tema de Problema con vectores c++ en el foro de C/C++ en Foros del Web. Hola miren tengo que hacer un programa que calcule la desviacion estandar usando vectores tipo contenedor... o bien este tipo de dato "vector<vector >" aca ...
  #1 (permalink)  
Antiguo 18/06/2012, 13:37
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 0
Problema con vectores c++

Hola miren tengo que hacer un programa que calcule la desviacion estandar usando vectores tipo contenedor... o bien este tipo de dato "vector<vector >" aca hice un codigo pero aun no se en que este fallando si alguien podria analizar el codigo y corregir o decirme los errores os agradeceria un monton :
Porque al compilar me vota un montooon de errores.... creo que estoy usando mal el tipo de dato vector<vector>

Código:
#include <iostream>
#include <iomanip>
#include <vector>
#include <cmath>
#include <cstdlib>
using namespace std;

unsigned leerdato(){
	double n;
	try{
		cout<<"Numero de elementos ";
		cin>>n;
		if(fmod(n,1)!=0) throw 1;
		if (n<0) throw 2;
	}catch (int e){
		switch(e){
		case 1: cout<<"El numero debe ser entero"<<endl; break;
		case 2: cout<<"El numero debe ser positivo"<<endl; break;
		}
		return leerdato();
	}
	return (unsigned) n;
}

void leerlim(double &li, double &ls){
	try{
		cout<<"Limites inferior y superior: ";
		cin>>li>>ls;
		if(li>=ls) throw 1;
	}catch (int e){
		cout<<"El limite inferior debe ser menor al superior !"<<endl;
		leerlim(li,ls);
	}
}


vector< vector<int> > &randMatE(unsigned n, int li, int ls){
	unsigned j; int d=ls-li;
	vector< vector<int> > *a;
	a= new vector<vector<int> >(n);
	for (j=0; j<n; j++){
		(*a)[j]=(int)((double)rand()/RAND_MAX*d+li);
	}
	return *a;
}

void mostrarVector(vector<vector <double> > x,unsigned n) {
	unsigned i;
	for(i=0;i<n;i++) {
		cout<<setw(8)<<setprecision(5)<< x[i];
		if((i+1)%10==0) cout<<endl;}
	cout<<endl;
}

double promedio(vector<vector<double> >x, unsigned n) {
	double s=0;
	if(n==0) throw" ¡Error! Vector vacío.";
	for(unsigned i=0;i<n;i++) s+=x[i];
	return s/n;
}

double dstd(vector<vector <double> >x, unsigned n) {
	double s=0;
	double prom=promedio(x,n);
	if(n==1) throw"¡Error! No existe desviación estándar";
	for(unsigned i=0;i<n;i++) s+=(prom-x[i])*(prom-x[i]);
	return sqrt(s/(n-1));
}

void mostrardesv(vector<vector <double> >x){
	cout<<"La desviacion resultante es = "<<dstd(x)<<endl;
}

int main(){
	unsigned n; double li,ls;
	vector < vector<double> > x;
	cout<<"***** Desviación estándar *****"<<endl;
	uno:
		n=leerdato();
		if (n==0) goto dos;
		leerlim(li,ls);
		x=randMatE(n,li,ls);
		mostrarVector(x,n);
		mostrardesv(x);
		goto uno;
	dos:
		cout<<"Programa terminado";
	return 0;
}

Última edición por drd222; 18/06/2012 a las 13:51
  #2 (permalink)  
Antiguo 18/06/2012, 14:05
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con vectores c++

Mira hay muchos errores de concepto sobre punteros y clases... Podrias especificar que es lo que quieres hacer, sobre todo en la funcion randMatE que veo que es la que crea el vector....

Queres tener un vector de numeros aleatorios? o una matriz de numeros aleatorios??

Saludos
  #3 (permalink)  
Antiguo 18/06/2012, 14:15
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema con vectores c++

Cita:
Iniciado por sam90 Ver Mensaje
Mira hay muchos errores de concepto sobre punteros y clases... Podrias especificar que es lo que quieres hacer, sobre todo en la funcion randMatE que veo que es la que crea el vector....

Queres tener un vector de numeros aleatorios? o una matriz de numeros aleatorios??

Saludos
Si lo siento es que no entiendo aun el uso del tipo de dato vector<vector>
pero bueno...

quiero un vector de numeros aleatorios "n" .... la funcion randMatE crea los numeros aleatorios... aunque creo que eso tambien tiene unos cuantos errores...
Gracias por la ayuda.!!!

Última edición por drd222; 18/06/2012 a las 14:26
  #4 (permalink)  
Antiguo 18/06/2012, 14:30
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con vectores c++

Entonces no necesitas usar vectar <vector >....simplementes necesitas usar:
vector<int>

Si tengo mas tiempo te modifico un par de cosas para que veas..
  #5 (permalink)  
Antiguo 18/06/2012, 14:33
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema con vectores c++

Cita:
Iniciado por sam90 Ver Mensaje
Entonces no necesitas usar vectar <vector >....simplementes necesitas usar:
vector<int>

Si tengo mas tiempo te modifico un par de cosas para que veas..
Entonces ese seria el unico error?? o tendria que cambiar algo mas ??...

Gracias x la ayuda...
  #6 (permalink)  
Antiguo 18/06/2012, 14:43
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema con vectores c++

EH...!!! Ya me funciona el programa.!!! MIL GRACIAS..:!!!!

Etiquetas: c++, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:21.