Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: joseh94 en 13 Octubre 2014, 13:05 pm



Título: Programa en C
Publicado por: joseh94 en 13 Octubre 2014, 13:05 pm
Hola a todos!

soy estudiante de ingeniería y estoy resolviendo un ejercicio de programación en C, que trata de obtener todos los divisores de un número dado. El código que he hecho es el siguiente:

#include <stdio.h>
int main(void)
{
    int a,i;
    printf("Introduzca el numero: ");
    scanf("%d",&a);
    for(i=a;i==2;i--)
    {
        if(a%i==0)
        printf("%d",i);
    }

    return 0;
}


Pero cuando lo ejecuto  no me muestra nada en pantalla. Lo he echo así porque es lo básico que me están enseñando aún, y he probado también a ir guardando todos los divisores que obtenga en un vector y luego mostrar en pantalla el vector, pero nada. Alguien me podría ayudar?

Gracias!


Título: Re: Programa en C
Publicado por: DeMoNcRaZy en 13 Octubre 2014, 13:16 pm
Prueba así:

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. int main(void)
  5. {
  6.    int a,i;
  7.    printf("Introduzca el numero: ");
  8.    scanf("%d",&a);
  9.    for(i=a;i==2;i--)
  10.    {
  11.        if(a%i==0)
  12.        printf("%d",i);
  13.    }
  14.  
  15.    cin.get();
  16.    return 0;
  17. }


Título: Re: Programa en C
Publicado por: joseh94 en 13 Octubre 2014, 13:20 pm
Prueba así:

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. int main(void)
  5. {
  6.    int a,i;
  7.    printf("Introduzca el numero: ");
  8.    scanf("%d",&a);
  9.    for(i=a;i==2;i--)
  10.    {
  11.        if(a%i==0)
  12.        printf("%d",i);
  13.    }
  14.  
  15.    cin.get();
  16.    return 0;
  17. }

Es que el comando cin.get() no nos lo han enseñado, no hay otra forma más simple?


Título: Re: Programa en C
Publicado por: leosansan en 13 Octubre 2014, 13:22 pm
Hola a todos!

soy estudiante de ingeniería y estoy resolviendo un ejercicio de programación en C, que trata de obtener todos los divisores de un número dado. El código que he hecho es el siguiente:

#include <stdio.h>
i................................................
    for(i=a;i==2;i--)
    {
        if(a%i==0)
        printf("%d",i);
    }

 ......................................
}


Pero cuando lo ejecuto  no me muestra nada en pantalla. Lo he echo así porque es lo básico que me están enseñando aún, y he probado también a ir guardando todos los divisores que obtenga en un vector y luego mostrar en pantalla el vector, pero nada. Alguien me podría ayudar?

Gracias!


El error lo tienes en el for ">=" en lugar de "==". Y deja algún espacio en el printf para que no salgan los divisores pegados.

Por cierto, puedes prescindir del uso de las llaves cuando sólo hay una línea:

Código
  1. for( i = a ; i >= 2 ; i-- )
  2.    if ( a % i ==0 )
  3.      printf("%d  ",i) ;

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Programa en C
Publicado por: DeMoNcRaZy en 13 Octubre 2014, 13:23 pm
cin.get(); es para que no se cierre el programa (la ventana).

Lo que realmente ha echo que se muestre tu programa es cuándo has añadido la librería: <iostream>

Puedes usar la librería <stdlib.h> y sustituir cin.get(); por system("PAUSE");


Título: Re: Programa en C
Publicado por: leosansan en 13 Octubre 2014, 13:31 pm
Insisto, con perdón, en que el error que hace que no muestre ningún resultado es:

Citar
for( i = a ; i == 2 ; i-- )

que debería ser:

Citar
for( i = a ; i >= 2 ; i-- )

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)