Dev - C++ - 3 numeros

 
Vista:
sin imagen de perfil

3 numeros

Publicado por Jesus (3 intervenciones) el 06/11/2014 03:01:50
Buenas noches a todos, disculpen soy nuevo en el area de programacion y estoy un poco novato y me interese en realizar un programa que leyera 3 numeros y si son 2 o mas numeros pares, que calculara el promedio de esos numeros y sino que indicara cual es el mayor y cual es el menor, pero me estanque y no encuentro como seguir el ejercicio, se que es algo sencillo lo que falta pero la verdad es que no se como expresar lo que falta por falta de conocimiento, aqui les dejo como voy:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
#include<conio.h>
int n,i,np,ni,a;
main()
{
for(i=0;i<=2;i++)
{
printf("Ingrese un numero [%d]: ",i+1);
scanf("%d",&n);
a=a+n;
if(n%2==0)
{
np++;
printf("Es par\n",np);
}
else
{
ni++;
printf("Es impar\n",ni);
}
}
if(np>=2)
{
         a=a/3;
         }
         else
         {
         }
getch();
return 0;
}


Agradecería su auyda porfavor, gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

3 numeros

Publicado por Jose Manuel (30 intervenciones) el 13/11/2014 13:41:38
Bueno, dado que este apartado es de C++... algunas sugerencias.

Intenta evitar el uso de la biblioteca <conio.h> ya que es una librería de Borland desarrollada exclusivamente para su uso con MS-DOS.. no cumple con los estándares ANSI y el código que hagas usándola no es portable a otras plataformas.

Yo he hecho un ejemplo usando la librería <iostream> bastante mas sencilla de usar, y típica de C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main(){
int numeros[3];
int pares = 0, suma = 0;
int Mayor = 0, Menor = 999999999;
cout << "Introduce 3 enteros" << endl;
cin >> numeros[0] >> numeros[1] >> numeros[2];
    for (int i=0; i<3; i++){
        if (numeros[i] % 2 == 0) pares ++;
        suma += numeros[i];
        if (numeros[i] > Mayor) Mayor = numeros[i];
        if (numeros[i] < Menor) Menor = numeros[i];
    }
    if (pares >= 2){
      cout << "Hay 2 o mas pares" << endl;
      } else cout << "No hay 2 o mas pares" << endl;
    double media = double (suma)/3;
    cout << "La media de los 3 numeros es :" << media << endl;
    cout << "EL mayor de los 3 numeros es: " << Mayor << endl;
    cout << "El menor de los 3 numeros es: " << Menor << endl;
}

El código puede desde luego refinarse, y uso una "trampa" para usar el numero menor porque ahora mismo no recuerdo como se saca el valor máximo para una variable entera... pero vamos, eso es mejorable.

Simplemente coges los 3 enteros, yo los he metido en un array de enteros para facilitar su manejo y hacer que el código sea reutilizable para otras cantidades. Creo un contador para numeros pares, y dos para el valor máximo y mínimo.

Hago un bucle de 0 a 2 (donde están los valores capturados con CIN) y...

Si el número es par, incremento el contador de pares (es importante inicializar los contadores a cero, o a saber que te puede salir)

Comparo ese numero con 0, y si es mayor le adjudico ese valor al máximo, en la siguiente pasada el segundo valor se comparará con ese, y en la tercera con el mayor de esos dos.

Hago lo mismo para buscar el menor... verás que lo comparo inicialmente con el mas grande que he podido poner, ese número depende de la plataforma y el compilador, y recuerdo que hay un modo de averiguarlo, pero ahora mismo no lo recuerdo (expertos por favor...)

Finalmente con un IF indicas si hay o no 2 o mas valores pares... preparas una variable que admita decimales para sacar la media de los 3 numeros (suma de todos y división por la cantidad de numeros), imprimo el mayor y el menor

Otro detalle. Veo que declaras las variables que usa tu programa fuera del int main(), es decir: Las declaras como variables globales... esa es una muy mala costumbre, intenta evitarla siempre que puedas, ya que puede darte muchos problemas cuando tienen un "pastel" de funciones o acciones corriendo por ahí. Las variables deben teóricamente de declararse dentro del ámbito donde van a usarse, y se destruyen tras su uso, lo mismo vale para funciones. Tener muchas variables globales es una llamada a que las uses inadvertidamente en alguna función y luego te salgan errores... y no tengas forma clara de averiguar de donde son.

Todo esto como meros consejos... yo tampoco es que sea una fiera en estos temas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

3 numeros

Publicado por Jesus (3 intervenciones) el 14/11/2014 02:06:35
Muchas gracias Jose manuel me fue de gran ayuda y igualmente gracias de nuevo por las sugerencias, feliz dia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar