Ingresar 10 enteros

Iniciado por mili03, 27 Junio 2010, 22:41 PM

0 Miembros y 2 Visitantes están viendo este tema.

mili03

--------------------------------------------------------------------------------

hola estoy empezando en esto  de la programacion en C me dejaron este programa que lea 10 numeros y haga la sumatoria de los numeros positivos, pero no logro que me ingrese solo los 10 Nº y tambien si ingreso un nomero negativo se termina el programa el cual supuestamente lo deve de ingnorar y seguir sumando los positivos diganme cual es el error Muchas Gracias. esto es lo que llevo.

Código:
# include <stdio.h>

main ()
{
int suma,num;
   int i;
suma=0;

 printf("introduzca 10 numeros:\n");

scanf("%d",&num);

while (num>=0)
{
suma=num+;
scanf("%d",&num );
}

printf("\nLa sumatoria de los numeros positivos es:%d",suma);

}



leogtz

Tienes muchos errores, empezando por que la función principal main debe ser declarada como:

int main()

Y con su respectivo return, y no lo tienes.

El control del ciclo está mal, utiliza la variable indice "i" para las 10 iteraciones.

Para saber si es positivo puedes utilizar un IF.


Saludos.
Código (perl) [Seleccionar]

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

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

nicolas_cof

#2
mili03, por favor utiliza las etiquetas GeSHI o code para postear codigo fuente

[code=c]codigo fuente[/code]

[code]codigo fuente[/code]

Recomendacion: leer el siguiente tema

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Con respecto al programa, podrias usar un do-while y verificar con un contador la lectura de los 10 numeros o con un for y usas el iterador como verificador

Y para la suma de los numeros positivos usa un acumulador, podrias hacerlo con un if

int suma = 0; // acumulador
...
if ( numero_leido >= 0 )
   suma += numero_leido;
...


Salu10.

leogtz

Citarint suma = 0; // acumulador
...
if ( numero_leido < 0 )
    suma += numero_leido;
...

@nicolas_cof, ahí estás acumulando los negativos, no los positivos como el quiere.
Citar
y haga la sumatoria de los numeros positivos
Código (perl) [Seleccionar]

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

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

nicolas_cof

Leo Gutiérrez., si perdon, lo hice apurado en el mismo post y no me di cuenta :P...

Salu10.

Horricreu

#5
Código (cpp) [Seleccionar]
suma=num+;

Esto lo tienes también mal, no sé si nicolas_cof sé refería a esto en su primera respuesta. ¿Qué quieres hacer, una asignación con suma o un postincremento? Para hacer una asignación con suma es así:

Código (cpp) [Seleccionar]
suma += num;

//Que es equivalente a:

suma = suma + num;


Y para hacer un postincremento:

Código (cpp) [Seleccionar]
num++

Esto como lo tenías, ¿no te daba errores de compilación?

Saludos :P

Mr.Blue

el while esta mal implementado.

Si el numero es negativo termina el programa y no pregunta por los 9 numeros restantes

if como te dijeron para preguntar y un for

d4n0n3

Código (cpp) [Seleccionar]
# include <stdio.h>

int main ()
{
    int suma=0;
    int numero_leido;

    printf("introduzca 10 numeros:\n");

   

for(int i=0; i<10; i++)
{
    scanf("%d",&numero_leido);
    if(numero_leido>=0)
       suma+=numero_leido;
}

printf("\nLa sumatoria de los numeros positivos es:%d",suma);

return 0;
}


PDD: nunca e programado en C a secas, soi de C++ ;D! esto seria asi?
Las cadenas de la esclavitud solamente atan las manos: es la mente lo que hace al hombre libre o esclavo.

nicolas_cof

La declaracion de variables dentro del for, te puede traer complicaciones con algunos compiladores, ya que esta practica esta permitida en el estandar C99. Yo te recomendaria para que tengas una mejor portabilidad ( esto depende de con que compiladores te manejes ) hacer las declaracion de las variables al comienzo de la funcion en este caso main()

Supuestamente al dia de hoy, todos los compiladores tendrian que soportar las caracteristicas de este estandar. Por lo tanto no se tendria que tener problemas. :P

#include <stdio.h>

int main( void )
{
   int suma = 0, numero_leido, i;
   
   printf( "Introduzca 10 numeros:\n" );
   for ( i = 0; i < 10; ++i )
   {
       scanf( "%d", &numero_leido );
       if ( numero_leido >= 0 )
           suma += numero_leido;
   }
   printf( "\nLa sumatoria de los numeros positivos es: %d\n", suma );

   return 0;
}


Salu10.

leogtz

Cita de: d4n0n3 en  4 Julio 2010, 01:23 AM
PDD: nunca e programado en C a secas, soi de C++ ;D! esto seria asi?

Sí, pero compilando así(gcc sólo, no sé los demás).
gcc -std=c99 code.c -o code
Código (perl) [Seleccionar]

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

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