Autor Tema: c++ calcular los divisores de un numero entero programa de divisibilidad entera  (Leído 10489 veces)

carlosn25

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Buenas, necesito una pequeña ayuda de algún programador  de C++ AVANZADO.

Este programa lo que hace es decirte si el numero que introduciste por pantalla es divisible entre 2, o 5 o 7.

El PROGRAMA FUNCIONA, Lo que necesito agregar por ejemplo:
- Si Introduzco el Numero 10 POR PANTALLA
-Va a entrar al primer caso del switch que dice que es divisible entre 2.

Hasta ahí está bien,

lo que necesito agregar es que si introduces el numero 10, que diga que entre al primer caso del switch que diga que es divisible entre 2 y que entre al segundo caso del switch ya que tambien es divisible entre 5.

Basicamente el programa necesito que imprima por que numeros es divisible el numero que ingresas por pantalla.

Otro ejemplo si ingreso el 14, en el programa actual me entra al primer caso del switch en el que es divisible entre 2, pero el numero 14 tambien puede entrar el case del 7 ya que tambien es divisible entre 7.

Y necesito que diga en pantalla por ejemplo el numero 14 es divisible entre 2 y 14

Código: [Seleccionar]
#include <iostream>
#include <iomanip>

using namespace std;
main()

{
int a, res, res1, res2, multi; char w='S';

while ((w=='S')||(w=='s'))
{
res=0; res1=0; res2=0;
system ("cls");
cout <<"introduzca un numero para determinar si";
cout <<"\n es multiplo de 2 , 5 o 7: ";
cin >>a;

res = a%2;
res1 = a%5;
res2 = a%7;

if (res == 0)
multi = 2;
else
{
  if (res1 == 0)
  multi == 5;
      else
      multi = 7;
    }
   
switch (multi)
{
case 2: cout<<"\t \n el numero " <<a << " es multiplo de 2";
break;

case 5: cout<<"\t \n el numero " <<a << " es multiplo de 5";
break;

case 7: cout<<"\t \n el numero " <<a << " es multiplo de 7";
break;

default: cout << "\n el numero no es multiplo de 2, 5 o 7...";

} //cierre del case

cout << "\n\ndesea continuar (s o S para si)\n";
cout << "cualquier otra tecla para salir... ";
cin >> w;
    }
}


Por favor ¿alguien puede ayudarme?, se los agradecería un montón.


« Última modificación: 07 de Noviembre 2016, 20:44 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 724
    • Ver Perfil
Re:c++ calcular los divisores de un numero entero /*AYUDA!*/
« Respuesta #1 en: 04 de Noviembre 2016, 12:25 »
Me temo que no puedes hacer eso en un switch.

El principal problema es que solo preguntas por una variable, por "multi" y esta solo puede almacenar un valor. No hay forma de que solo con "multi"el programa pueda saber que un numero es multiplo de 2 y de 5, como es el caso de cuando introducimos un 10

Yo creo que lo ideal sería darle otro enfoque al código, de hecho, se puede hacer lo mismo sin necesidad de switch ni tantas variables.

Se puede preguntar directamente el resultado de la operacion modulo y lanzar mensajes segun corresponda.
En todo caso, podemos usar una variable booleana para controlar si el numero introducido es multiplo de alguno de los vaores 2,5 y/o 7
Algo así:

Código: [Seleccionar]
main()

{
   char w='S';
   boolean sinMultilpos = true;
   
   while ((w=='S')||(w=='s'))
   {
   system ("cls");   
   cout <<"introduzca un numero para determinar si";
   cout <<"\n es multiplo de 2 , 5 o 7: ";
   cin >>a;
   
      if (a%2 == 0)
      {
         sinMultiplos=false;
         cout<<"\t \n el numero " <<a << " es multiplo de 2";
       }
      if (a%5 == 0)
      {
         sinMultiplos=false;
         cout<<"\t \n el numero " <<a << " es multiplo de 5";
       }
      if (a%7 == 0)
      {
         sinMultiplos=false;
         cout<<"\t \n el numero " <<a << " es multiplo de 7";
       }

       if (sinMultiplos)//Si esto es true, es que no se han encontrado multiplos
         cout << "\n el numero no es multiplo de 2, 5 o 7...";

      cout << "\n\ndesea continuar (s o S para si)\n";
      cout << "cualquier otra tecla para salir... ";
      cin >> w;
    }
}


No lo he ejecutado, pero supongo que funcionaría...o al menos sirve para dar una idea de como simplificar el proceso.

Si por algún motivo estuvieras obligado a usar un switch o una estructura determinada (posibles exigencias del profesor...) ya habría que pensar algo más elaborado
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".