Foros aprenderaprogramar.com
		Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: carlosn25 en 02 de Noviembre 2016, 19:42
		
			
			- 
				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
 
 #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.
 
 
 
- 
				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í:
 
 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