Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: iAmChapin_ en 28 Agosto 2015, 06:39 am



Título: Centinela 9999
Publicado por: iAmChapin_ en 28 Agosto 2015, 06:39 am
Hola chicos, vengo a molestar de nuevo a ver si alguien me echa la mano con este código. A ver, el problema está en lo de las vueltas del ciclo, hay una parte en que ya no me hace el proceso y no tengo ni idea del porque. Les muestro el código:

Código
  1. #include <iostream.h>
  2. #include <conio.h>
  3.  
  4. int num;
  5. int numNuevo;
  6. int auxiliar = 0;           //VARIABLES DE TIPO ENTERO
  7. int promedio;
  8. int numAgregado;
  9. int numResta;
  10.  
  11. void main(){
  12.  
  13. cout << "Programado por ;Curso de Algoritmos;Tarea 6" << endl;
  14.   cout << "Carne 1190" << endl << endl;
  15.   cout << "Programa que calcula promedio de enteros impares" << endl;
  16.   cout << "Ingrese 9999 si desea terminar -- Ingrese numeros para el promedio" << endl;
  17.   cin >> num;
  18.   auxiliar++;
  19.  
  20.   //DETERMINAMOS SI EL NUMERO INGRESADO ES 9999
  21.   while(num != 9999){
  22.  
  23.   cout << "Ingrese otro numero: " << endl;
  24.   cin >> numNuevo;
  25.   auxiliar++;
  26.   if (numNuevo == 9999){
  27.   auxiliar--;
  28.   //CALCULAMOS PROMEDIO
  29.   promedio = numAgregado/auxiliar;
  30.   //IMPRIMIMOS RESULTADOS
  31.      cout << "El promedio es: " << promedio << endl;
  32.      break;
  33.      }
  34.   else{
  35.   numAgregado = num+numNuevo;
  36.   }
  37.  
  38.   }
  39.  
  40.   getch();
  41.  
  42. }

Aclarando: Uso Borland, se que hay algunas funciones que no debo de utilizar o estan desfasadas pero son simples ejercicios y solo tengo que presentar el código nada más.

Donde esta el problema? Se puede decir que en la línea 27. Cuando ingreso 1 numero en la 17 aumenta 1 a la variable auxiliar en la linea 18, bien, ahora en el while, si ingreso otro número, automaticamente agrega 1 otra vez a la variable en la linea 25 siempre y cuando no sea 9999. Despues de eso, ingreso 9999 y vuelve a sumar 1 a auxiliar, pero le resto 1 despues dentro del if en la linea 27 para que la division sea exacta (si ingreso 2 numeros, se debe dividir en 2, si ingreso 3, se debe dividir en 3, por eso la variable), lo probe y funcionó con 2 numeros, pero de 3 en adelante, es como si la línea 27 no hiciera efecto porque divide mal, no hace su función. Podrían decirme el porqué? Perdon si no me explico bien, me avisan y vuelvo a explicar, saludos a todos!

Mod: Datos bloqueados para proteger la privacidad


Título: Re: Centinela 9999
Publicado por: Mientras en 28 Agosto 2015, 08:47 am
Solo te funciona con 2 numeros por que está cogiendo el "primer" y "ultimo" dividido entre la cantidad de números.

Si ingresas n1 n2 n3 n4, te va a dar : (n1+n4)/4.

No hay necesidad de usar otra variable para ingresar el nuevo número.

El problema está en la línea 35.



Título: Re: Centinela 9999
Publicado por: iAmChapin_ en 28 Agosto 2015, 17:08 pm
Solo te funciona con 2 numeros por que está cogiendo el "primer" y "ultimo" dividido entre la cantidad de números.

Si ingresas n1 n2 n3 n4, te va a dar : (n1+n4)/4.

No hay necesidad de usar otra variable para ingresar el nuevo número.

El problema está en la línea 35.



Wow, por algo tan simple el programa falla, tenías mucha razón amigo, solucionado!! Muchísimas gracias como siempre!!  ;-)