Error al compilar programa en c++

Iniciado por LauraD, 23 Agosto 2014, 03:19 AM

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

LauraD

Hola!

Tengo que realizar el siguiente programa: Solicitar al usuario dos números y definir cuales son los divisores de cada uno de esos números y cuales tienen en común...

Esto llevo del código, pero al ejecutarlo solicita los dos números y luego muestra un mensaje de windows que dice que el programa dejo de funcionar...

Les agradeceria si me ayudan a corregir el error ya que no sé que es lo que esta fallando. Gracias


#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    int m,n,i,j,cont;
    i=0;
    cont=0;
   
    cout<<"Por Favor Digite 2 numeros "<<endl;
    cin>>m;
    cin>>n;
   
       
        for(i=0;i<m;i++)
        {
                         
        if(m%i==0)
    {
            cout<<"Los divisores de "<<m<<"son: "<<i<<endl;
    cont=cont+1;
        }
   
    cout<<"Hay "<<cont<<"Divisores del numero "<<m<<endl;
    }
   

system ("PAUSE");
return EXIT_SUCCESS;
}

Blaster

En la primera iteración en esta linea:

Código (cpp) [Seleccionar]
if(m % i == 0)

Estas aplicado el operador modulo sobre m cuando i tiene el valor de cero

Bob1098

Me gustaría darte un par de consejos. El primero es que no uses system("pause");, es una simple cuestión de portabilidad, al usarlo tienes que incluir la librería "cstdlib", y esta función esta ejecutando el comando "pause" que es propio del cmd de Windows. Con esto evitas que tu programa pueda ser ejecutado en Linux, u otras plataformas. Aunque no tiene demasiada importancia, es mejor acostumbrarse a usar cin.get(); que tiene la misma función y no necesita otra librería que no sea "iostream". Otra cosa es que en esta parte del código:

Código (cpp) [Seleccionar]

i=0;
cont=0;
   
    cout<<"Por Favor Digite 2 numeros "<<endl;
    cin>>m;
    cin>>n;
   
       
        for(i=0;i<m;i++)
        {
                         
        if(m%i==0)
    {
            cout<<"Los divisores de "<<m<<"son: "<<i<<endl;
    cont=cont+1;
        }
   
    cout<<"Hay "<<cont<<"Divisores del numero "<<m<<endl;
    }



No es necesario que inicialices la variable i como 0, ya que eso lo haces en el bucle for. Y por último es lo que dice Blaster, en el if estas dividiendo el numero entre 0, lo cual no se puede hacer ni en matemáticas ni en programación.

Espero haberte ayudado, un saludo.

Drewermerc

hola amiga.
Bueno deja de funcionar por que recuerda que no puedes dividir entre 0 y como el for lo inicias desde 0 entonces por eso ocurre un error lo único que debes hace es iniciar el for desde 1 y se soluciona.

Saludos.
Drewermerc.

flony

#4
Drewermerc tiene razón
ahora el razonamiento del algoritmo seria mas o menos asi
1º determinar el menos(dividir mas arriba de eso no tiene sentido)
2º el for tendría como limite el menor
if(m%i==0)
    {
           cout<<"Los divisores de "<<m<<"son: "<<i<<endl;
esta bien, no se para que guardar el quantum lo importante es guardar los números. Lo que lleva al punto 4
Citarcuales tienen en común
guardar cada numero tanto de m como de n(critica constructiva llamar numero 1 y numero 2 son mas expresivo el nombre de la variable), podría ser en un vector del tamaño del menor , supongo debe haber alguna opción mas optima.
5º comparar los vectores y determinar los números iguales
jajajaj
se me ocurrio algo mas practico, pero bue no puedo mostrar el code porque no se hacen tareas...pero digamos usando el if que generaste pero anidado ;)
si un problema no tiene solucion entonces no es un problema...es algo inevitable