Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mili03 en 27 Junio 2010, 22:41 pm



Título: Ingresar 10 enteros
Publicado por: mili03 en 27 Junio 2010, 22:41 pm
--------------------------------------------------------------------------------

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);

}




Título: Re: algo semcillo para los master
Publicado por: leogtz en 27 Junio 2010, 22:48 pm
Tienes muchos errores, empezando por que la función principal main debe ser declarada como:

Código:
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.


Título: Re: algo semcillo para los master
Publicado por: nicolas_cof en 27 Junio 2010, 22:54 pm
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

Código:
int suma = 0; // acumulador
...
if ( numero_leido >= 0 )
    suma += numero_leido;
...

Salu10.


Título: Re: algo semcillo para los master
Publicado por: leogtz en 27 Junio 2010, 22:56 pm
Citar
int 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


Título: Re: algo semcillo para los master
Publicado por: nicolas_cof en 27 Junio 2010, 22:57 pm
Leo Gutiérrez., si perdon, lo hice apurado en el mismo post y no me di cuenta :P...

Salu10.


Título: Re: Ingresar 10 enteros
Publicado por: Horricreu en 28 Junio 2010, 12:32 pm
Código
  1. 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
  1. suma += num;
  2.  
  3. //Que es equivalente a:
  4.  
  5. suma = suma + num;

Y para hacer un postincremento:

Código
  1. num++

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

Saludos :P


Título: Re: Ingresar 10 enteros
Publicado por: Mr.Blue en 28 Junio 2010, 21:35 pm
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


Título: Re: Ingresar 10 enteros
Publicado por: d4n0n3 en 4 Julio 2010, 01:23 am
Código
  1. # include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.    int suma=0;
  6.    int numero_leido;
  7.  
  8.    printf("introduzca 10 numeros:\n");
  9.  
  10.  
  11.  
  12. for(int i=0; i<10; i++)
  13. {
  14.    scanf("%d",&numero_leido);
  15.    if(numero_leido>=0)
  16.       suma+=numero_leido;
  17. }
  18.  
  19. printf("\nLa sumatoria de los numeros positivos es:%d",suma);
  20.  
  21. return 0;
  22. }

PDD: nunca e programado en C a secas, soi de C++ ;D! esto seria asi?


Título: Re: Ingresar 10 enteros
Publicado por: nicolas_cof en 4 Julio 2010, 02:13 am
La declaracion de variables dentro del for, te puede traer complicaciones con algunos compiladores, ya que esta practica esta permitida en el estandar C99 (http://en.wikipedia.org/wiki/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

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


Título: Re: Ingresar 10 enteros
Publicado por: leogtz en 4 Julio 2010, 02:46 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).
Código:
 gcc -std=c99 code.c -o code


Título: Re: Ingresar 10 enteros
Publicado por: d4n0n3 en 4 Julio 2010, 02:54 am
vale vale thx, si yo en la facultad programo en C++ que soy de primero y al ver el problemilla este como lo he visto facilon pues me he arrancado por eso he pedido la supervision vuestra valla que lo hiciera mal obviando cosas de C, como por ejemplo esto de la variables locales y confundiera al chaval que verdaderamente nesesitaba la ayuda ;D GRACIAS pues en verdad he aprendio en este post :D ya no me da tanto miedo C jejeje