Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: flacc en 9 Diciembre 2010, 10:34 am



Título: Comparando resultados[c]
Publicado por: flacc en 9 Diciembre 2010, 10:34 am
Hola a todos, estoy alegre porque por fin pude hacer un ejercicio del libro "introducción a la programaión en c", sin tener que veniar a preguntar aqui :laugh:... y no es que no me guste el foro ni nada.. solo que me alegra haber podido encontrar y autoexplicarme mis errores(aunque tarde mas de 1 hora)... en fin... ya que lo tengo hecho, me gustaría si es que tienen tiempo, que ustedes lo hicieran, para comparar resultados en cuanto a líneas de código, sencilles del algoritmo, tamaño del mismo, uso de memoria, etc... el ejercicio es este:

Citar
Escribir un programa que calcule la suma de los 20 primeros números múltiplos de 5 o de 7

yo lo ise con 5, pero 7 o 5 es cosa de cambiar solo el digito... y cierto es que como prueba les voy a colocar mi codigo, pero no le den ojeada hasta que terminen el suyo.. mi idea es comparar basicamente mas que nada, aprender de sus estilos al programar, ya que yo solo soy aficionado y no tengo experiencia alguna escribiendo código, así que espero me perdonen si les suena a sanguijuela, pero asi me pulo al codear... y mi codigo es:

Código
  1. /* Escribir un programa que calcule la suma de los 20 primeros números múltiplos de 5 o de 7 */
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6.    int cont, valor, total, x, final, numero;
  7.    cont = 0;
  8.    final = 0;
  9.    valor = 5;
  10.    total = 0;
  11.    numero = 0;
  12.  
  13.    printf("Calculando la suma de los multiplos de 5... \n");
  14.  
  15.  
  16.    /* se repite 20 veces en función de "cont" */
  17.  
  18.    for ( cont = 0; cont <= 20; numero++ )
  19.    {
  20.        x = (numero % valor == 0) ? 1 : 0;    /* comprobando si es multiplo de "valor" */
  21.        if (x == 1)
  22.        {
  23.              total = total + numero;
  24.              cont++;
  25.              }
  26.        }
  27.  
  28.  
  29.    printf("Resultado: %d\n", total);
  30.    getchar();
  31.    return 0;
  32. }
  33.  

y eso es... si no tienen tiempo no importa... y si quieren sugerir, con confianza nomas... saludoss


Título: Re: Comparando resultados[c]
Publicado por: ghastlyX en 9 Diciembre 2010, 15:19 pm
Sería mucho más eficiente si en lugar de iterar sobre los números, iteraras sobre el factor del 5, así pasarías directamente por los múltiplos.

Además, matemáticamente puedes resolverlo sin bucles. Pongo un programa que recoge en primer lugar el valor (en tu caso el 5) y a continuación el número de múltiplos que se quiera sumar e imprime su suma.
Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    int valor, n;
  5.    scanf("%d %d", &valor, &n);
  6.    printf("%d\n", valor*n*(n + 1)/2);
  7. }


Título: Re: Comparando resultados[c]
Publicado por: flacc en 10 Diciembre 2010, 02:55 am
esta claro que me falta por apreder... gracias por tu codigo y criticas... :xD