Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: kritik_9 en 3 Noviembre 2018, 21:11 pm



Título: Ayuda con programa en c++
Publicado por: kritik_9 en 3 Noviembre 2018, 21:11 pm
Hola estoy realizando el siguiente programa que haga esto :
Escriba un programa para obtener todos los números
naturales de dos dígitos  "m"  "n" que cumplan la condición m * n = a * b donde "a"
se obtiene de "m" con el intercambio de sus dígitos y "b" se obtiene de "n" de la
misma manera.
Estoy atascado en la parte donde hay que poner los numeros M y N para que se multipliquen, quiero que solo acepte el rango de 10-99 ya que si pongo M = 1 Y N =5 me lo multiplica de igual forma y no quiero que pase eso , he intendado hacerlo con while pero no funciona.
La otra parte donde no tengo ni idea de como hacerla es la de intercambiar los digitos. Aqui os pongo mi codigo por si alguien puede ayudarme.

Código:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int x,y,elegir,m1,n1;

cout << "1.Numeros de dos cifras M\n";
cout << "2.Numero de dos cifras N\n";
cout << "3.Multiplicacion M*N\n";
cout << "Elegir:"; cin >> elegir;
switch (elegir){
case 1:
cout<<"Numeros M\n";
for (int m=9;m<=99;m++){
    cout <<m<<endl;
} break;
case 2:
cout<< " Numeros N\n";
for (int n=9;n<=99;n++){
    cout<<n<<endl;} break;

case 3:
    do{
cout << "Escriba el numero М:"; cin >> m1;
cout << "Escriba el numero N:"; cin >> n1;
if (x = m1*n1){
cout << "El resultado es :" << x;
}
} while ((m1<10)&&(n1<10)||(m1>99)&&(n1>99));





    break;


}

system("pause");
}




Título: Re: Ayuda con programa en c++
Publicado por: EdePC en 4 Noviembre 2018, 05:55 am
Saludos,

- Supongo que no entiendo bien tu enunciado, siendo bastante literal hay que generar números de dos dígitos (10 al 99) para "m" y lo mismo para "n", y comprobar que se cumpla:

Ej.: 46 * 32 = 64 * 23

- Te presento el siguiente algoritmo que hace eso que no sé explicar :xD, básicamente se "invierte" el número utilizando Residuos, Divisiones y Multiplicaciones de 10. Ej.:

(46 % 10) * 10 => 60

(46 - (46 % 10)) / 10 => 4

60 + 4 => 64

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5.  int m, n, a, b;
  6.  for (m = 10; m <= 99; m++) {
  7.    for (n = 10; n <= 99; n++) {
  8.      a = ((m % 10) * 10) + ((m - (m % 10)) / 10);
  9.      b = ((n % 10) * 10) + ((n - (n % 10)) / 10);
  10.      if (m * n == a * b) {
  11.        cout << m << " x " << n << " = " << a << " x " << b << endl;
  12.      }
  13.    }
  14.  }
  15.  cin.get(); // Alternaiva portable a system("pause");
  16.  return 0;
  17. }

- También se podría hacer manipulando punteros, o indexando y convirtiendo String ...