ayuda para cambiar este ejercicio

Iniciado por mattray10, 2 Marzo 2021, 22:22 PM

0 Miembros y 1 Visitante están viendo este tema.

mattray10

necesito que el cero no se cuente, en este programa cuando lo pones lo cuenta como un numero mas, hay posibilidad de cambiar eso o en su defecto hacer un código distinto?

ESTE ERA EL ENUNCIADO.
--------------------------------------------------------------------------------------------
ingresar 100 números o ingresar números hasta que se ingrese el 0, lo que ocurra primero.(números ingresados por el usuario)

Finalizado el ingreso o forzada la finalización al ingresar 0, se debe indicar:

Cuántos números fueron ingresados
Cuántos números son positivos y cuántos son negativos
Cuántos números son pares y cúantos son impares
--------------------------------------------------------------------------------------------
Código (cpp) [Seleccionar]

int main() {

   int max_num = 100;
   int numero = -1;
   int pos=0,neg=0,cont=0,par=0,impar=0;

 for(int i=0; i<max_num && numero!=0; i++) {
   cout<<"ingrese un numero ";cin>>numero;
   cont++;
   if(numero%2==0){
       par++;
   }
   else{
       impar++;
   }
   if(numero<0){
       neg++;
   }
   else{
       pos++;
   }
 }
 cout<<"se ingresaron "<<cont<<" numeros"<<endl;
 cout<<"se ingresaron "<<pos<<" positivos "<<endl;
  cout<<"se ingresaron "<<neg<<" negativos "<<endl;
   cout<<"se ingresaron "<<par<<" pares "<<endl;
   cout<<"se ingresaron "<<impar<<" impares "<<endl;
 return 0;
}



MOD: El código debe estar entre etiquetas de Código GeSHi

K-YreX

Al igual que en el tema anterior, el código debe incluirse entre etiquetas de Código GeSHi


Si no quieres tener en cuenta el 0, es muy sencillo.
Código (cpp) [Seleccionar]

int numero = -1;
for(int i = 0; i < MAX_NUM && numero != 0; ++i) {
  cout << "Introduce un numero: ";
  cin >> numero;
  if(numero != 0) {
    // todo lo demas
  }
}



Otra forma de conseguir lo mismo sería:
Código (cpp) [Seleccionar]

int numero;
cout << "Introduce un numero (0 para terminar): ";
cin >> numero;
while(numerosIngresados < MAX_NUMEROS && numero != 0) {
  ++numerosIngresados;
  // comprobar si es par/impar y positivo/negativo
  cout << "Introduce otro numero (0 para terminar): ";
  cin >> numero;
}

Personalmente me gusta más la segunda opción. Queda un código un poco más limpio, evitas el uso de una variable más, no necesitas inicializar <numero> a un valor concreto para que funcione y puedes cambiar el mensaje para que ponga "...otro número..." en vez de siempre "...un número...".
Además en muchas ocasiones (sobre todo académicas) se suele incidir en utilizar un for() únicamente cuando la condición dependa solo del contador del for() y no con condiciones compuestas (aunque sea totalmente válido); y por ende sustituirlo por un while() en tal caso.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;