Autor
|
Tema: ejercicio esperanza c++ (Leído 3,123 veces)
|
indict
Desconectado
Mensajes: 78
|
Hola, quiero hacer un programa que le des una serie de elementos en tan por uno y calcule la esperanza. La esperanza será la suma de cada elemento introducido multiplicado por el valor del contador correspondiente. Si la suma de valores introducidos no es igual a 1 se imprimirá por pantalla que no existe la esperanza en cambio si la suma de valores es igual a 1 se mostrará por pantalla que sí existe la esperanza y es ... ejemplo: introduzco los elementos: 0.1 , 0.5 , 0.3, 0.1 la suma de estos 4 elementos es 1 luego si existe la esperanza. Y será: 0.1 * 0 + 0.5 * 1 + 0.3 *2 + 0.1 * 3 = 1.4 Mi problema es que este mismo caso que he ejemplificado el programa me devuele que la esperanza no existe :SS Si pudieras decirme donde está el fallo os lo agradeceria Muchas gracias #include<iostream> #include<vector> using namespace std;
bool es_esperan(double s){ vector<double>v; for(int i=0;i<v.size();i++){ s=s+v[i]; } if(s==1){return true;} else{return false;} }
int main(){int n; double esperanza,e,s=0; bool t; cout<<"introduzca el tamañp de los x_i"<<endl; cin>>n; vector<double>v(n); for(int i=0;i<n;i++){ cout<<"introduzca el elemento"<<i<<endl; cin>>e; v[i]=e; } for(int i=0;i<n;i++){ esperanza=esperanza+(i*v[i]); } t=es_esperan(s); if(t){cout<<"La esperanza existe i es"<<" "<<esperanza<<endl;} else{cout<<"La esperanza no existe"<<endl;}
system("pause"); return 0;}
|
|
|
En línea
|
|
|
|
engel lex
|
mira la variable "s" de tu codigo, solo ubicaré donde está en orden de ejecucion s=0 t=es_esperan(s); es_esperan(double s) s=s+v[i];
así que t depende de s... y aunque no soy realmente conocedor de "<vector>" estoy seguro que en "es_esperan" el vector es vacio... y la s es = 0 ya que lo declaraste al principio y la única modificación depende de un vector vacio... a "es_esperan" debes pasarle el vector, ya que "s" no tiene velas en ese entierro... puedes declararlo global o pasarlo como parametro, tu decides eso...
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
mira la variable "s" de tu codigo, solo ubicaré donde está en orden de ejecucion s=0 t=es_esperan(s); es_esperan(double s) s=s+v[i];
así que t depende de s... y aunque no soy realmente conocedor de "<vector>" estoy seguro que en "es_esperan" el vector es vacio... y la s es = 0 ya que lo declaraste al principio y la única modificación depende de un vector vacio... a "es_esperan" debes pasarle el vector, ya que "s" no tiene velas en ese entierro... puedes declararlo global o pasarlo como parametro, tu decides eso... Ahí está la clave. Tienes que pasar el vector como parámetro a la función.
|
|
|
En línea
|
|
|
|
indict
Desconectado
Mensajes: 78
|
Gracias por la ayuda He pasado el vector como parámetro en la función booleana pero sigue sin funcionar. :S bool es_esperan(vector<double>v){ double s=0; for(int i=0;i<v.size();i++){ s=s+v[i]; } if(s==1){return true;} else{return false;} }
|
|
|
En línea
|
|
|
|
|
indict
Desconectado
Mensajes: 78
|
La inicializo a 0 y sigue sin funcionar bien :/.
|
|
|
En línea
|
|
|
|
engel lex
|
postea tu código hasta este punto (recomiendo usar para mostrar no el símbolo de numeral, sino donde dice GeSHi buscas el lenguaje)
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
indict
Desconectado
Mensajes: 78
|
#include<iostream> #include<vector> using namespace std; bool es_esperan(vector<double>v){ double s=0; for(int i=0;i<v.size();i++){ s=s+v[i]; } if(s==1){return true;} else{return false;} } int main(){int n; double esperanza=0,e,s=0; bool t; cout<<"introduzca el tamañp de los x_i"<<endl; cin>>n; vector<double>v(n); for(int i=0;i<n;i++){ cout<<"introduzca el elemento"<<i<<endl; cin>>e; v[i]=e; } for(int i=0;i<n;i++){ esperanza=esperanza+(i*v[i]); } t=es_esperan(v); if(t){cout<<"La esperanza existe i es"<<" "<<esperanza<<endl;} else{cout<<"La esperanza no existe"<<endl;} system("pause"); return 0;}
|
|
|
En línea
|
|
|
|
engel lex
|
practicas recomendadas... inciializa toda variable... no declares variables en el for (i la tienes declarada como 4 veces) declara las funciones main primero #include<iostream> #include<vector> using namespace std; bool es_esperan(vector<double>v); int main(){ int n=0, i=0; double esperanza=0, e=0, s=0; bool t=false; cout<<"introduzca el tamañp de los x_i"<<endl; cin>>n; vector<double>v(n); for(i=0;i<n;i++){ cout<<"introduzca el elemento"<<i<<endl; cin>>e; v[i]=e; } for(i=0;i<n;i++){ esperanza=esperanza+(i*v[i]); cout << "esperanza: " <<esperanza << "\n";//agregado para visualizar } t=es_esperan(v); if(t){cout<<"La esperanza existe i es"<<" "<<esperanza<<endl;} else{cout<<"La esperanza no existe"<<endl;} system("pause"); return 0; } bool es_esperan(vector<double>v){ double s=0; int i=0; for(i=0;i<v.size();i++){ s=s+v[i]; cout << "s: " << s << "\n";//agregado para visualizar } if(s==1){return true;} else{return false;} }
los cambio que le hice al codigo son esteticos, y le agregué 2 cout para visualizar como se movian las variables, el código funciona aparentemente bien... con cuales valores eso debe dar "1"?
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
indict
Desconectado
Mensajes: 78
|
con la suma de todos los los elementos del vector, es decir la suma de todos los e debe dar 1. Gracias por toda la ayuda y aportaciones
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Todavía hay esperanza para la supervivencia de Mandriva
Noticias
|
wolfbcn
|
0
|
1,389
|
18 Enero 2012, 18:59 pm
por wolfbcn
|
|
|
Cierran la web 'No más IVA' de Esperanza Aguirre contra la subida del IVA del...
Noticias
|
wolfbcn
|
1
|
1,545
|
12 Julio 2012, 03:56 am
por SCU
|
|
|
Crean un videojuego en el que tenemos que ayudar a Esperanza Aguirre a evitar...
Noticias
|
wolfbcn
|
0
|
1,411
|
7 Abril 2014, 21:40 pm
por wolfbcn
|
|
|
La esperanza de los griegos está en las Bitcoins
Noticias
|
wolfbcn
|
3
|
1,555
|
11 Julio 2015, 19:32 pm
por Orubatosu
|
|
|
¡Carta de ESPERANZA, investigadora en Biología Molecular, desde Londres !
Foro Libre
|
Hason
|
9
|
4,336
|
16 Junio 2016, 16:42 pm
por kniki
|
|