Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: juanrada66 en 5 Diciembre 2011, 00:28 am



Título: Programa pascal
Publicado por: juanrada66 en 5 Diciembre 2011, 00:28 am
Calcule y escriba el número de términos necesarios para que el valor de la siguiente sumatoria se aproxime lo más cercanamente a 10000000, sin que lo exceda:

La serie es la sumatoria desde K=1 hasta k=? de (k^2 + 1)/k

Por favor si alguien me puede explicar que no lo entiendo


Título: Re: Programa pascal
Publicado por: $Edu$ en 5 Diciembre 2011, 01:23 am
Tienes que hacer un programa que diga el valor de k final entonces? haces un:

While sumatoria <= 10000000

vas guardando los valores de la sumatoria en una variable y las cuentas las haces con la formula que te dieron ( sumatoria := sumatoria + (k^2 + 1)/k )
k = k + 1

Cuando salga del bucle el valor de k sera el maximo antes de que se pase de los 10 millones la sumatoria, que es lo que te piden


Título: Re: Programa pascal
Publicado por: juanrada66 en 5 Diciembre 2011, 02:39 am
Hola yo lo estaba intentando con un repeat - until, pero sabes tengo la duda le tengo que colocar hasta 10000000.

sumatoria:=0;
k:=0;
repeat
k=k+1;
sumatoria=sumatoria + k^2 + 1/k


until(sumatoria=10000000) si esto me diera un numero con decimales tengo que hacer el redondeo al entero anterior, no se si pueda hacerlo de esta manera. lo que no entiendo como tu dices es como ella va salir en el k màximo y no se va a parar antes es decir si por ejemplo si sumatoria es 13 que es menor a 10000000, o 20 o 30 asì sucesivamente muchas gracias


Título: Re: Programa pascal
Publicado por: $Edu$ en 5 Diciembre 2011, 02:48 am
Tienes que entender bien lo que pasa las diferencias de los bucles, si sabes ingles comprenderas que While es "mientras" y un Repeat - Until es "repetir hasta que.." entonces yo hoy decia que se repita MIENTRAS que la sumatoria sea menor o igual a 10 millones, que es lo que queremos, pero si lo haras con un repeat until, entonces tendras que hacer lo opuesto se entiende? en vez de "mientras sumatoria sea menor o igual a 10 millones" tendras que hacer un "repetir hasta que sumatoria sea mayor o igual" porque ahi dejaria de entrar al bucle y no aumentaria el valor de k, por lo que nos quedamos con el valor maximo de k.

No necesitas hacer ningun redondeo, el valor de k es un natural siempre no? si no es asi entonces no funciona lo que estamos queriendo hacer. Despues la sumatoria y eso no tiene porque redondearse.


Título: Re: Programa pascal
Publicado por: ¡Micronet! en 31 Diciembre 2011, 23:46 pm
(Si hice algo mal, no duden en decirme por favor)


Código
  1. {*
  2. * Copyright (c) 2011, Necro
  3. *
  4. * This file is part of Free Software
  5. *
  6. * This file is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2.1 of the License, or (at your option) any later version.
  10. *
  11. * This file is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public
  17. * License along with AcademicCAD; if not, write to the Free Software
  18. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  19. *
  20. *}
  21. program sumatoria;
  22. var
  23. k: real;
  24. suma: real;
  25. begin
  26. k:=1;
  27. suma:=0;
  28. while suma <= 10000000 do
  29. begin
  30. suma := suma + (((k*k) + 1) /k);
  31. k:= k+1;
  32. writeln(suma);
  33. end;
  34. end.
  35.  
  36.  

Bueno ya pasaron varios dias, quizas te sirva esto y ojala que no lo tengas como tarea pero bueno al fin y al cabo el que aprende soy yo (H)... jajajaja xD!, pero tarde o temprano las consecuencias vendran :D! jejeje