Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.
Autor
|
Tema: Suma, valor promedio, mayor y el menor numero (Leído 7,048 veces)
|
Castiblanco
Desconectado
Mensajes: 2.411
Coding :D
|
Hola tengo un problema con un ejercicio: Hacer un programa que lea diez valores enteros en un arreglo desde el teclado y calcule y muestre: la suma de los elementos del arreglo , el valor promedio, el mayor valor y el menor valor del arreglo#include"iostream.h" #include"conio.h" main() { double num [10]; int i; double promedio = 0, sumatoria = 0, mayor = 0, menor = 0; for(i=0;i<10;i++) { cout<<"ingrese un numero"<<i+1<<"\n"; cin>>num [i]; if (mayor<=num[i]) mayor = num[i] + 0; else menor = num[i] + 0; } for(i=0;i<10;i++) { sumatoria += num[i]; } promedio = sumatoria/i; cout<<"La suma del arreglo es "<<sumatoria<<"\n"; cout<<"el promedio es "<<promedio<<"\n"; cout<<"el numero mayor es "<<mayor<<"\n"; cout<<"el numero menor es "<<menor<<"\n"; getch(); } Tengo hecho eso y funciona casi todo bien, hace la suma de los elementos del arreglo , el valor promedio, el mayor valor pero no hace el menor, yo pensaba que si ya podia capturar el mayor el menor seria sencillamente el inverso pero como que no es asi. Alguien que me ayude. PD: Y quería saber para que sirve el numero que dentro de num [10]; pensaba que era el numero de elementos que tenia el arreglo, pero yo se lo cambio a uno menor y sigue funcionando normal. Saludos...
|
|
|
|
|
En línea
|
 Deuteronomio 13:6, 13:10 
|
|
|
h0oke
Desconectado
Mensajes: 2.058
Coder ~
|
Hola castiblanco, para detectar un número mayor o menor en un arreglo, una idea es tomar arbitrariamente un valor del array, que generalmente tiende a ser el primero... Si no pasamos a la etapa de eficiencia, podrías tomar al primer elemento como mayor y menor, y luego en el recorrido del arreglo, comenzarás a comparar desde el primer elemento.
PD: Recuerda que los enteros también incluyen números negativos, por lo tanto el 0 no puede ser tomado como máximo y mínimo.
|
|
|
|
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Moderador
 
Desconectado
Mensajes: 2.710
Nie Dam Sie
|
Lo del menor podes hacerlo de muchas formas. Así a simple vista y considerando que es muy temprano para mi, podes buscarlo cuando sacas el promedio: menor=num[0]; for(i=0;i<10;i++) { if(num[i]<menor) menor=num[i]; sumatoria += num[i]; } conio? MAL. PD: Y quería saber para que sirve el numero que dentro de num [10]; pensaba que era el numero de elementos que tenia el arreglo, pero yo se lo cambio a uno menor y sigue funcionando normal. Si. 10 es el numero de elementos que va a tener el arreglo. Si lo modificas a 1 te vas a mover por posiciones de memoria invalidas. Te funciona simplemente porque en ese caso en particular, las posiciones del arreglo están agrupadas en la memoria en forma continua. Pero que pasa si no lo están?. Un saludo!
|
|
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
h0oke
Desconectado
Mensajes: 2.058
Coder ~
|
Hola littlehorse, no me refería a posiciones negativas, me refería a elementos del arreglo negativos, ya que en el enunciado se destaca : "un programa que lea diez valores enteros en un arreglo".
Me había olvidado lo de conio xD
Y una última cosa: recomendaría que tu función devuelva algún tipo de valor, aunque sea void, pero lamentablemente no recuerdo el fundamento de esto.
|
|
|
|
« Última modificación: 18 Febrero 2010, 13:04 por _cux »
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Moderador
 
Desconectado
Mensajes: 2.710
Nie Dam Sie
|
Hola  Yo entendí lo que dijiste  . Lo que yo aclare fue por la pregunta que hizo Casti  . Edit: Que función? no hay ninguna ahí mas que el main. Cuando no se indica el valor que devuelve main se sobreentiende que devuelve un entero (acorde al estandar). Un saludo!
|
|
|
|
« Última modificación: 18 Febrero 2010, 13:09 por Littlehorse »
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
|
|
Castiblanco
Desconectado
Mensajes: 2.411
Coding :D
|
Bueno gracias por la orientación voy a mirar el siguiente y ahora más tarde los vuelvo a molestas, igual pongo el código por si alguien lo quiere ver. #include"iostream.h" #include"conio.h" main() { double num [10]; int i; double promedio = 0, sumatoria = 0, mayor = 0, menor = 0; for(i=0;i<10;i++) { cout<<"ingrese un numero"<<i+1<<"\n"; cin>>num [i]; } menor=num[0]; mayor=num[0]; for(i=0;i<10;i++) { if(num[i]<=menor) menor=num[i]; if(num[i]>=mayor) mayor=num[i]; sumatoria += num[i]; } promedio = sumatoria/i; cout<<"La suma del arreglo es "<<sumatoria<<"\n"; cout<<"el promedio es "<<promedio<<"\n"; cout<<"el numero mayor es "<<mayor<<"\n"; cout<<"el numero menor es "<<menor<<"\n"; getch(); } PD: No entendí lo de "conio? MAL." Saludos...
|
|
|
|
|
En línea
|
 Deuteronomio 13:6, 13:10 
|
|
|
Littlehorse
All the world's a stage
Moderador
 
Desconectado
Mensajes: 2.710
Nie Dam Sie
|
De nada! Mal que incluyas conio solamente para hacer una pausa. Hazla de forma estándar como debe ser o en su defecto llama al programa mediante la consola pero, no incluyas una librería no estándar solamente para utilizar getch. (Aunque no deberías incluirla bajo ningún contexto ya que básicamente no sirve absolutamente para nada) Ah y otra cosa, iostream es estándar, no hace falta ponerle comillas. Es hacer trabajar al pre-procesador al vicio  Un saludo!
|
|
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
h0oke
Desconectado
Mensajes: 2.058
Coder ~
|
No entiendo muy bien por qué inicializa dos veces las variables mayor y menor, o tal vez se haya olvidado.
|
|
|
|
|
En línea
|
|
|
|
MasterPM2
Desconectado
Mensajes: 421
,.-~´¨¯¨`·~-.¸--$4(_Må§të®-Þåølø™_)-$-,.-~´¨¯¨`·~-
|
la forma correcta de incluir las librerias seria: include <iostream> otra cosa, si vas a inicializar varias variables xD (varias variables  ) te recomiendo de esta forma: int a,b,c,d,e=0;
|
|
|
|
« Última modificación: 18 Febrero 2010, 21:50 por Blink182 »
|
En línea
|
ANBU暗部 Ansatsu Senjutsu Tokushu Butai暗殺戦術特殊部隊 Fuerza militar especial táctica de eliminación........MyDarker Sid3
<firma retirada, no la vuelvas a poner o se te sancionara> <- - Amenazas
|
|
|
nicolas_cof
Desconectado
Mensajes: 343
Into the Wild
|
No le veo sentido a esta declaracion double promedio = 0, sumatoria = 0, mayor = 0, menor = 0; con esta bastaria, ya que luego les asignas un valor double promedio, sumatoria = 0, mayor, menor; Salu10.
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Colaborador
 
Desconectado
Mensajes: 2.968
/^$/
|
Bastaría con: double sumatoria = 0, mayor, menor; Para sacar el promedio, luego de hacer la sumatoria, divides entre N y listo: sumatoria /= n;
|
|
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.058
Coder ~
|
Leo, creo que el double es demasiado, ya que sólo pide el ingreso de números enteros; un float o double sólo iría para el promedio creo.
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Colaborador
 
Desconectado
Mensajes: 2.968
/^$/
|
Leo, creo que el double es demasiado, ya que sólo pide el ingreso de números enteros; un float o double sólo iría para el promedio creo.
No te he entendido. Aunque solo sean números enteros, al dividir igual puede quedar un número decimal, de ahí el double, el double puede cambiarse por un float ya que n = 10. promedio = sumatoria/n; Que es igual a : sumatoria /= n;
|
|
|
|
|
En línea
|
|
|
|
Castiblanco
Desconectado
Mensajes: 2.411
Coding :D
|
No entiendo muy bien por qué inicializa dos veces las variables mayor y menor, o tal vez se haya olvidado.
Si, en realidad se me olvido, ya que estaba trabajando en el código que yo tenia entonces no le borre eso. Gracias a todos por comentar mañana los vuelvo a molestar  Saludos...
|
|
|
|
|
En línea
|
 Deuteronomio 13:6, 13:10 
|
|
|
|
|