Programa en C

Iniciado por joseh94, 13 Octubre 2014, 13:05 PM

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

joseh94

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!

DeMoNcRaZy

Prueba así:

Código (cpp) [Seleccionar]
#include <iostream>
#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);
    }
   
    cin.get();
    return 0;
}
Esta página web no está disponible - Google Chrome

joseh94

Cita de: YuseTist en 13 Octubre 2014, 13:16 PM
Prueba así:

Código (cpp) [Seleccionar]
#include <iostream>
#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);
    }
   
    cin.get();
    return 0;
}


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

leosansan

Cita de: 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>
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 (cpp) [Seleccionar]
for( i = a ; i >= 2 ; i-- )
    if ( a % i ==0 )
      printf("%d  ",i) ;


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



DeMoNcRaZy

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");
Esta página web no está disponible - Google Chrome

leosansan

Insisto, con perdón, en que el error que hace que no muestre ningún resultado es:

Citarfor( i = a ; i == 2 ; i-- )

que debería ser:

Citarfor( i = a ; i >= 2 ; i-- )

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