elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Necesito ayuda con un problemita
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Necesito ayuda con un problemita  (Leído 3,996 veces)
jonyayala95

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Necesito ayuda con un problemita
« en: 2 Enero 2013, 03:51 am »

Hola, necesito ayuda con un programita que no puedo codear.
La idea es, ver si existen 50 cuadrados perfectos consecutivos que sumen 26110725; y ademas verificar si la solución es única o hay mas.

Bien, mi idea es armar algo que sume los primeros 50 cuadrados (1,4,9,..2500) y ver si la suma es 26110725. Si no lo es (obviamente no) que pruebe sumando (4,9,16,.....2601) y asi siguiendo siempre aumentando en 1, hasta dar con la suma buscada.

Tiene que ser en C++ (creo qeu ubiqué bien el tema).

No se como sumar los resultados que me da el for, por ejemplo si tengo:
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. int main()
  4. {
  5.  int x=0;
  6.  for(x=1;x<=50;x++)
  7.  {
  8.    printf("%d x %d = %d\n ", x,x,x*x);
  9.  }
  10.  
  11. getch();
  12. }
  13.  
Como hago para sumar los 50 cuadrados que da el for?
Agradecería que me dieran solución al problema original.
Muchiiisiimas gracias!


« Última modificación: 3 Enero 2013, 02:11 am por simorg » En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #1 en: 2 Enero 2013, 16:51 pm »

Hola jonyayala95 puedes utilizar otra variable dentro del for:
Código
  1. #include<stdio.h>
  2. ///#include<conio.h> Esto sobra que así no es portable el código
  3. int main()
  4. {
  5.    int i = 0;
  6.    int suma = 0;
  7.    for(i=1 ; i <= 50; i++)// Las variables utilizadas por excelencia para los for's son i , j  , k ...(aunque puedes utilizar la que quieras)
  8.    {
  9.        printf("%d x %d = %d\n ", i,i,i*i);
  10.        suma += i*i; ///Esto es lo mismo que suma = suma + (i*i)
  11.    }
  12.    printf("La suma es: %d\n", suma);
  13.    ///getch(); Puedes sustituirlo por getchar
  14.    printf("Presione una tecla para terminar. . .");
  15.    getchar();
  16.    return 0;///Debes poner el valor de retorno
  17. }
  18.  


« Última modificación: 2 Enero 2013, 17:07 pm por avesudra » En línea

Regístrate en
flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #2 en: 2 Enero 2013, 20:33 pm »

no me da la suma que estimas tu, los 26110725
pero aqui el codigo...no use for pero se puede adaptar
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7. int limite=26110725;
  8. int cuadrado=0;
  9. int suma=0;
  10. int variable=0;
  11. do
  12. {
  13. variable=variable++;
  14. cuadrado=variable*variable;
  15. suma=cuadrado+suma;
  16. }
  17. while (limite>=suma);
  18. cout<<"sumandos "<<variable<<endl;
  19. cout<<"la suma da "<<suma<<endl;
  20. cin.get();
  21. return 0;
  22. }
« Última modificación: 3 Enero 2013, 02:08 am por simorg » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #3 en: 2 Enero 2013, 23:54 pm »

Hola, necesito ayuda con un programita que no puedo codear.
La idea es, ver si existen 50 cuadrados perfectos consecutivos que sumen 26110725; y ademas verificar si la solución es única o hay mas.
La idea de flony es buena pero no tiene en cuenta que sean 50 los cuadrados. En cualquier caso tampoco da,no existe solución:
Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int i = 0,j=0;
  6.    int suma = 0;
  7.    while (suma<=261100725){
  8.        for(i=1 +j; i <= 50+j; i++){
  9.            suma += i*i;
  10.           }
  11.        j++;
  12.    }printf("La suma mas proxima es %d",suma);
  13.    return 0;
  14. }
  15.  

Saluditos!. ......  :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
En línea

flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #4 en: 3 Enero 2013, 00:16 am »

Citar
La idea es, ver si existen 50 cuadrados perfectos consecutivos que sumen 26110725; y ademas verificar si la solución es única o hay mas.

Bien, mi idea es armar algo que sume los primeros 50 cuadrados (1,4,9,..2500) y ver si la suma es 26110725. Si no lo es (obviamente no) que pruebe sumando (4,9,16,.....2601) y asi siguiendo siempre aumentando en 1, hasta dar con la suma buscada.
vamos por parte llegado a los 50 no da ni a palo el resultado buscado, recién a los 428 sumandos da una aproximación al numero buscado, el rdo es 26.225.914, eso da mi code.
Citar
Si no lo es (obviamente no) que pruebe sumando (4,9,16,.....2601) y asi siguiendo siempre aumentando en 1, hasta dar con la suma buscada.
...es evidente que el sabe que no da a los 50 operandos y que vaya sumando de a uno.
la parte de
Citar
y ademas verificar si la solución es única o hay mas
...es la que no entiendo...si hay mas de una solución implica que busca una raíz cuadrada y no una sumatoria, lo cual nunca aclara
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
jonyayala95

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #5 en: 3 Enero 2013, 03:25 am »

De hecho sí existe solución, la encontré a mano.

Pongo mi razonamiento (matematico):

Supongo que el primer cuadrado es n, entonces:



y luego de usar algunas identidades conocidas llego a:



Luego de resolver esas cuadraticas me da soluciones n=698 y n=-747

Posiblemente no me expliqué bien...

Agrego el code con el ejemplo n= 698 (tambien anda con n=-747)

Código
  1. #include<stdio.h>
  2. int main()
  3. {
  4.    int i = 0;
  5.    int suma = 0;
  6.    for(i=698 ; i <= 747; i++)
  7.    {
  8.        printf("%d x %d = %d\n ", i,i,i*i);
  9.        suma += i*i;
  10.    }
  11.    printf("La suma es: %d\n", suma);
  12.  
  13.    printf("Presione una tecla para terminar. . .");
  14.    getchar();
  15.    return 0;


Necesito por favor me guien para terminarlo, muchisimas gracias por sus respuestas
« Última modificación: 3 Enero 2013, 14:27 pm por jonyayala95 » En línea

flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #6 en: 3 Enero 2013, 13:47 pm »

 :rolleyes: :rolleyes:
sabia que era un binomio....desde que dijiste que tenia dos soluciones
bueno asi saque la parte final de la sumatoria
http://subefotos.com/ver/?c67546c5bd5a37fa34750184fe9c1ad9o.jpg
no se que resultado da...vi los numeritos y me asuste  :xD :xD

y estas pidiendo una calculadora de bascara?...eso es un poquito mas complicado  :-X :-X
igual hice un código tonto, modificando un poco el que puse, que buscaría una aproximación pero no estoy seguro...si alguien mas da una mano genial  ;D
modificado
el codigo lo estamos revisando...jajajaja pequeño error de reglas de potenciacion  :silbar: :silbar:
« Última modificación: 3 Enero 2013, 13:52 pm por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
jonyayala95

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #7 en: 3 Enero 2013, 15:12 pm »

:rolleyes: :rolleyes:
sabia que era un binomio....desde que dijiste que tenia dos soluciones
bueno asi saque la parte final de la sumatoria
http://subefotos.com/ver/?c67546c5bd5a37fa34750184fe9c1ad9o.jpg
no se que resultado da...vi los numeritos y me asuste  :xD :xD

y estas pidiendo una calculadora de bascara?...eso es un poquito mas complicado  :-X :-X
igual hice un código tonto, modificando un poco el que puse, que buscaría una aproximación pero no estoy seguro...si alguien mas da una mano genial  ;D
modificado
el codigo lo estamos revisando...jajajaja pequeño error de reglas de potenciacion  :silbar: :silbar:

No, yo enrealidad lo que buscaba era un programita que pruebe sumando (1^2+2^2+...+50^2) y vea que resultado da, si es igual que 26110725 que pare y diga, el primer cuadrado es 1. Si no es igual que 26110725 que pruebe sumando (2^2+3^2+4^2+...+51^2) y verifique si el resultado es 26110725. Se entiende no?
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #8 en: 3 Enero 2013, 15:42 pm »

De hecho sí existe solución, la encontré a mano.

Necesito por favor me guien para terminarlo, muchisimas gracias por sus respuestas
A mano no creo que cuente mucha, sería más bien una comprobación que una solución.
Te vuelvo a postear el código pero corregido, ya que tenía una cifra de más en el anterior y no iniciaba la suma a cero en cada intento. Hace lo que quieres: suma de 1 a 50 y si no da de 2 a 51 y si no da de 3 a 52, etc.

Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int i = 0,j=0;
  6.    int suma = 0;
  7.    while (1){
  8.        for(i=1 +j; i <= 50+j; i++){
  9.            suma += i*i;
  10.           }
  11.        if (suma==26110725){
  12.             break;
  13.        }
  14.        j++;suma=0;
  15.    }printf("La suma  es %d desde %d hasta %d\n",suma,i-50,i-1);
  16.    /*****************Para comprobar******************/
  17.    /*suma=0;
  18.             for(j=i-50 ; j <= i-1; j++){
  19.                 printf("%d x %d = %d\n ", j,j,j*j);
  20.                 suma += j*j;
  21.             }
  22.          printf("La suma es: %d\n", suma);*/
  23.    return 0;
  24. }
  25.  
Saluditos!. ...  :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
En línea

jonyayala95

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Necesito ayuda con un problemita
« Respuesta #9 en: 3 Enero 2013, 17:41 pm »

A mano no creo que cuente mucha, sería más bien una comprobación que una solución.
Te vuelvo a postear el código pero corregido, ya que tenía una cifra de más en el anterior y no iniciaba la suma a cero en cada intento. Hace lo que quieres: suma de 1 a 50 y si no da de 2 a 51 y si no da de 3 a 52, etc.

Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.    int i = 0,j=0;
  6.    int suma = 0;
  7.    while (1){
  8.        for(i=1 +j; i <= 50+j; i++){
  9.            suma += i*i;
  10.           }
  11.        if (suma==26110725){
  12.             break;
  13.        }
  14.        j++;suma=0;
  15.    }printf("La suma  es %d desde %d hasta %d\n",suma,i-50,i-1);
  16.    /*****************Para comprobar******************/
  17.    /*suma=0;
  18.             for(j=i-50 ; j <= i-1; j++){
  19.                 printf("%d x %d = %d\n ", j,j,j*j);
  20.                 suma += j*j;
  21.             }
  22.          printf("La suma es: %d\n", suma);*/
  23.    return 0;
  24. }
  25.  
Saluditos!. ...  :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:

Capooo! Muchisimas gracias! Eso era lo que buscaba, no me sabia lo del while
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Necesito ayuda, por favor, necesito eliminar definitivamente un contacto del msn « 1 2 »
Mensajería
jordijor 10 14,437 Último mensaje 19 Diciembre 2011, 09:16 am
por A4TECH
[Ayuda] Un problemita con el WebBrowser
.NET (C#, VB.NET, ASP)
GonzaFz 1 1,792 Último mensaje 19 Mayo 2012, 18:07 pm
por GonzaFz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines