Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/06/2012, 13:37
drd222
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 13 años
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