Qué error tengo en mi programa ?

Iniciado por naiken, 22 Diciembre 2018, 02:40 AM

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

naiken

Hola, buen día/noche tengo un programa en el que me pide lo siguiente:

Leer dos números enteros y determinar a cuánto es igual el producto del primer dígito de c/u. Y mi código es el siguiente:

Código (cpp) [Seleccionar]
#include<iostream>

using namespace std;

main()
{
   int n1,n2,r1,r2,pro;

   cout<<"Ingrese dos numeros: ";
   cin>>n1>>n2;

   if(n1>=10 && n1<=99 && n2>=10 && n2<=99)
   {
       while(n1!=0 && n2!=0)
       {
           r1 = n1%10;
           n1 = n1/10;

           r2 = n2%10;
           n2 = n2/10;
           
       }


           pro = n1*n2;
           cout<<"Primeros digitos: "<<n1<<" "<<n2<<endl;
           cout<<"Producto de los digitos: "<<pro<<endl;

   }

   else
   {
       cout<<"Deben ser de dos digitos, intente de nuevo...";
   }
}

------------------------

AL ejecutarlo no me multiplican los primeros digitos :/ se quedan en 0 , hice la prueba de escritorio y si, como tengo la condición hasta que sea igual a 0  termina el bucle y por tanto los resultados de n1,r1,n2 y r2 llegan a ser 0 pero por más que trato de pensarle no doy :/ siento que es la condición pero no tengo más idea :'/ si alguien podría apoyarme por favor , se los agradecería muchisimo  :huh:

K-YreX

El código del programa ponlo entre etiquetas de código GeSHi, encima del cuadro de texto.

El <while> divide cada número hasta que los dos son 0. Entonces el resultado es 0 * 0 = 0. Además usas un contador <i> que no tiene ninguna utilidad.Si el número tiene que tener dos cifras obligatoriamente, sólo necesitas dividir el número entre 10 una vez.
En un caso general con cualquier número de cifras tienes que hacer un bucle como el que tienes pero fíjate que la primera cifra de cada número se guarda en r1 y r2 respectivamente, no en n1 y n2 (estos valdrán 0). Suerte :-X

PD: Los problemas relacionados con este tipo de ejercicios se solucionan cogiendo un papel y un boli o pensando lo que estás haciendo, no poniendo código sin pensar...
Código (cpp) [Seleccionar]

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

naiken

De hecho, publicar aquí fue mi última opción T.T porque ya tenía un gran tiempo pensando y analizando el problema , pero obvio que le seguía pensando, mientras pues no está de más el pedir un apoyo el cual te agradezco mucho!!! lo del contador ya lo había quitado pero de tanta prueba que le hacía no lo quité y se vio acá (me disculpo) y gracias por lo de la edición del código en GeSHi ya lo edité :D Muchas gracias por la observación! seguiré con esto :D