Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: LauraD en 23 Agosto 2014, 03:19 am



Título: Error al compilar programa en c++
Publicado por: LauraD en 23 Agosto 2014, 03:19 am
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

Código:
#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;
}


Título: Re: Error al compilar programa en c++
Publicado por: Blaster en 23 Agosto 2014, 03:38 am
En la primera iteración en esta linea:

Código
  1. if(m % i == 0)

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


Título: Re: Error al compilar programa en c++
Publicado por: Bob1098 en 23 Agosto 2014, 17:20 pm
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
  1. i=0;
  2. cont=0;
  3.  
  4.    cout<<"Por Favor Digite 2 numeros "<<endl;
  5.    cin>>m;
  6.    cin>>n;
  7.  
  8.  
  9.        for(i=0;i<m;i++)
  10.        {
  11.  
  12.        if(m%i==0)
  13.     {
  14.            cout<<"Los divisores de "<<m<<"son: "<<i<<endl;
  15.     cont=cont+1;
  16.        }
  17.  
  18.     cout<<"Hay "<<cont<<"Divisores del numero "<<m<<endl;
  19.    }
  20.  
  21.  

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.


Título: Re: Error al compilar programa en c++
Publicado por: Drewermerc en 24 Agosto 2014, 21:23 pm
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.


Título: Re: Error al compilar programa en c++
Publicado por: flony en 25 Agosto 2014, 04:16 am
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
Código:
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
Citar
cuales 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 ;)