problema con codigo (seguro es algo muy basico pero busco y nada)

Iniciado por Soltan, 30 Julio 2010, 07:46 AM

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

Soltan

saludos, a toda la comunidad! soy nuevo en el foro y realmente me parece muy interesante!

bien;
es solo un programa que solicite un numero n
y muestre en pantalla los numeros primos entre 1 y n.
compila sin errores, se ejecuta y luego simplemente se sale sin mostrarme los resultados no c que hacer, aca esta el codigo:



#include <stdio.h>
main()
{
int i, n, cont, j;
printf("ingrese n",n);
scanf("%d", &n);
for(i=1; j<=n; i= i+1)
{
         cont=0;
         for(j=1; j<=i; j=j+1)
         {
                  if(i%j==0)
                  {
                            cont++;
                  }
           }
           {
                            if(cont <= 2)                           
                                        printf(" %d \n ",i);
                                        scanf("%d",i );
                             }
                             }
                             }
                             
                           
                   

leogtz

Las llaves están mal acomodadas.

Aquí te faltó el carácter & antes de i.
scanf("%d",i );

Aquí:

for(i=1; j<=n; i= i+1)


j no tiene valor, tiene un valor basura, creo que debiste poner "i".

La lógica está mal, debería ser así:

#include <stdio.h>
int main()
{
    signed int i, n, cont, j;
    printf("Ingrese n : ",n);
    scanf("%d", &n);
    for(i = 2; i <= n; i++)
    {
         cont = 0;
         for(j = 1; j <= i; j++)
         {
            if(i % j == 0)
            {
                cont++;
            }
         }
            if(cont <= 2)
            printf("%d\n", i);
    }
    return 0;
}
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Soltan

gracias por las correciones pero a pesar de hacerlo tal cual me has indicado el programa presenta el mismo problema
compila
ejecuta
pero al introducir el valor y presionar enter desaparece del modo de ejecucion

leogtz

#include <stdio.h>
int main()
{
    signed int i, n, cont, j;
    printf("Ingrese n : ",n);
    scanf("%d", &n);
    for(i = 2; i <= n; i++)
    {
         cont = 0;
         for(j = 1; j <= i; j++)
         {
            if(i % j == 0)
            {
                cont++;
            }
         }
            if(cont <= 2)
            printf("%d\n", i);
    }
    while(getchar() != '\n');
    getchar();
    return 0;
}
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Soltan

mchisimas gracias eso solvento el problema!! estoy investigando acerca del getchar realmente era la solucion del problema gracias!! aunque seria bueno si me aclaras el por que ? de todos modos gracias! XD

leogtz

get - obtener
char - tipo de dato

Y no, no era la solución al problema, todo el código estaba mal.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Soltan

pues a mi codigo solo le he colocado



Citarwhile(getchar() != '\n');
    getchar();
    return 0;
y ha sido la solucion al problema en todo caso muchas gracias

leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

misterharry

Citarwhile(getchar() != '\n');
    getchar();

no veo xq un while para el getchar(), si getchar() espera el salto de linea para continuar o no??