Ayuda con programa en c++

Iniciado por kritik_9, 3 Noviembre 2018, 21:11 PM

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

kritik_9

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.

#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");
}




EdePC

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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main() {
  int m, n, a, b;
  for (m = 10; m <= 99; m++) {
    for (n = 10; n <= 99; n++) {
      a = ((m % 10) * 10) + ((m - (m % 10)) / 10);
      b = ((n % 10) * 10) + ((n - (n % 10)) / 10);
      if (m * n == a * b) {
        cout << m << " x " << n << " = " << a << " x " << b << endl;
      }
    }
  }
  cin.get(); // Alternaiva portable a system("pause");
  return 0;
}


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