programacion

3
Enunciado Si hacemos una lista de todos los números naturales menores que 10 y que son múltiplos de 3 o de 5, obtenemos 3, 5, 6, 9. La suma de estos múltiplos es 23. Encuentre la suma de todos los múltiplos de 3 o 5 menores que 1000. [Fuente: projecteuler.net] Solución Primero redactamos la función main() del programa en lenguaje C. #include <stdio.h> int main() { // suma de los naturales menores que 10 int s; // suma s = sumMulTreCin(10); printf("%d", s); return 0; } Se declara la variable entera s para almacenar la suma a calcular. Se asigna a s el valor que retorna la función sumMulTreCin() a la cual se le pasa el valor 10, pues hasta ahí se desea calcular la suma de los múltiplos de 3 y de 5. Se despliega el valor de la suma, s, invocando la función printf(), indicándole que es un entero, "%d", y que su valor está en s. Ahora redactamos la función sumMulTreCin(). int sumMulTreCin(int t) { // suma de los naturales menores que t int s = 0; // suma int k;// contador for (k = 3; k < t; k++) if (k % 3 == 0 || k % 5 == 0) s += k; return s; } Se indica que la función retornará un número entero, int, que se llama sumMultTreCin y que recibe un entero llamado t. En la función main() se resuelve el problema particular de calcular la suma de los múltiplos de 3 o cinco menores que 1000, pero en la función sumMulTreCin() se resuelve en general, para cualquier t. Para lograrlo se declara la variable entera s para albergar la suma buscada, inicializándola en cero para garantizar que cada vez que la función sea invocada su valor no sea contaminado por posibles valores indeterminados. Se declara la variable k para contar desde uno hasta t-1, pues pide que sean menores que el tope, t.

Upload: anggie

Post on 01-Oct-2015

218 views

Category:

Documents


0 download

DESCRIPTION

Curso de Programacion Lineal. Ingenieria.

TRANSCRIPT

EnunciadoSi hacemos una lista de todos los nmeros naturales menores que 10 y que son mltiplos de 3 o de 5, obtenemos 3, 5, 6, 9. La suma de estos mltiplos es 23. Encuentre la suma de todos los mltiplos de 3 o 5 menores que 1000. [Fuente: projecteuler.net] Solucin

Primero redactamos la funcin main() del programa en lenguaje C.

#include

int main()

{

// suma de los naturales menores que 10

int s; // suma

s = sumMulTreCin(10);

printf("%d", s);

return 0;

}

Se declara la variable entera s para almacenar la suma a calcular. Se asigna a s el valor que retorna la funcin sumMulTreCin() a la cual se le pasa el valor 10, pues hasta ah se desea calcular la suma de los mltiplos de 3 y de 5. Se despliega el valor de la suma, s, invocando la funcin printf(), indicndole que es un entero, "%d", y que su valor est en s. Ahora redactamos la funcin sumMulTreCin().

int sumMulTreCin(int t){

// suma de los naturales menores que t int s = 0; // suma

int k;// contador for (k = 3; k < t; k++) if (k % 3 == 0 || k % 5 == 0) s += k;

return s;

}

Se indica que la funcin retornar un nmero entero, int, que se llama sumMultTreCin y que recibe un entero llamado t. En la funcin main() se resuelve el problema particular de calcular la suma de los mltiplos de 3 o cinco menores que 1000, pero en la funcin sumMulTreCin() se resuelve en general, para cualquier t.

Para lograrlo se declara la variable entera s para albergar la suma buscada, inicializndola en cero para garantizar que cada vez que la funcin sea invocada su valor no sea contaminado por posibles valores indeterminados. Se declara la variable k para contar desde uno hasta t-1, pues pide que sean menores que el tope, t.

El ciclo for() inicializa la variable k en 1 y recorre con ella todos los valores enteros desde 1 hasta t-1 ya que k debe mantenerse menor que t, y cuando llega a ese valor la condicin del ciclo se hace falsa y lo abandona. Para cada valor de k se ejecuta la nica sentencia que hay en el interior del ciclo for(), un if().

En el if() se verifica si el valor de k es mltiplo de 3 comparando el valor del residuo que deja k al dividirlo por 3 con cero, y cuando esto ocurre significa que k es mltiplo de 3, tambin se verifica si k es mltiplo de 5 y ambas verificaciones van unidas con el operador lgico O, ||, de manera que se cumple cuando cualquiera de las verificaciones, o ambas, resulta verdadera.

Cuando ocurre que el valor de k es mltiplo de 3 o de 5, se suma el valor actual de k a la variable s, s += k;, ignorando, no sumando, los que los otros, pues no se suman a s. Luego del ciclo for() se retorna entonces el valor que finalmente quede acumulado en s y pasndolo a la funcin que invoco a sumMulTreCin(), en este caso, main(). El programa C completo sera.

#include

int sumMulTreCin(int t)

{

// suma de los naturales menores que t int s = 0; // suma

int k;// contador

for (k = 3; k < t; k++)

if (k % 3 == 0 || k % 5 == 0) s += k;

return s;

}

int main()

{

// suma de los naturales menores que 10

int s; // suma

s = sumMulTreCin(10);

printf("%d", s);

return 0;

}

Si se compila y ejecuta este programa, se puede averiguar cunto da la suma de los naturales mltiplos de 3 o de cinco y que son menores que 1000. Si se desea averiguar el valor de esta suma para otros valores, basta cambiar el 1000 por el numero deseado en la funcin main() y compilando y ejecutando nuevamente el programa.

Aunque redactamos primero la funcin main() y luego la sumMulTreCin(), en el programa completo alteramos el orden para que el compilador supiera el formato de sumMulTreCin() antes de ser invocada desde main(). Pero esto se puede lograr declarando a la funcin sumMulTreCin() antes de main() y detallndola despus de ella.

#include

int sumMulTreCin(int);

int main()

{

// suma de los naturales menores que 10

int s; // suma

s = sumMulTreCin(10);

printf("%d", s);

return 0;

}

int sumMulTreCin(int t)

{

// suma de los naturales menores que t

int s = 0; // suma

int k;// contador

for (k = 3; k < t; k++)

if (k % 3 == 0 || k % 5 == 0) s += k;

return s;

}

Ahora la funcin main() conoce la estructura externa de la funcin sunMulTreCin(), esto es, que retorna un int, que se llama sumMulTreCin() y que recibe un int, lo cual basta para que el compilador pueda verificar la correccin de la invocacin de la funcin, si bien los detalles se dan luego de la funcin main() para mantener un estilo periodstico, con los titulares primero.

ecabrera, 2011, septiembre