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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  DUDA SOBRE ESTRUCTURAS REPETITIVAS EN ESTE PROBLEMA!! C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DUDA SOBRE ESTRUCTURAS REPETITIVAS EN ESTE PROBLEMA!! C++  (Leído 1,887 veces)
larregui15

Desconectado Desconectado

Mensajes: 8


Ver Perfil
DUDA SOBRE ESTRUCTURAS REPETITIVAS EN ESTE PROBLEMA!! C++
« en: 16 Julio 2015, 23:35 pm »

Este problema consiste en encontrar un numero amigo, por ejemplo todos los divisores de 220 sumandos dan 284, y los divisores de 284 dan 220. Claro que no se toma en cuenta el mismo numero.

220 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
284 = 1 + 2 + 4 + 71 + 142 = 220

Entrada

La entrada consiste de varios casos de prueba hasta fin de archivo. Cada caso de prueba consiste en un número entero <= 1000.

Salida

Por cada caso de prueba imprima en una linea su número amigo. Si no tiene un amigo imprima -1.

Ejemplos de entrada

2  
6  
1298  
5637  
284  
7962  
220
 
Ejemplos de salida

-1  
6  
-1  
-1  
220  
-1  
284

Lo que hice fue lo siguiente:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int num, i, sum=0, sum2=0;
  8.    cin >> num;
  9.  
  10.    for (i=1; i<num; i++) { if (num%i==0) { sum = sum+i;} }
  11.  
  12.        for (int j=1; j<sum; j++) { if (sum%j ==0) sum2=sum2+j; }
  13.  
  14. if (sum2 == num) {cout << sum << endl; }
  15.           else {cout << "-1"<< endl; }
  16.  
  17. }
  18.  
Y EL PROGRAMA ESTA BIEN, PERO AHORA SI PONGO UN WHILE PARA QUE SE REPITA TODO Y ASI PODER HACER LOS 1000 CASOS DE PRUEBA QUE PIDE ... EMPIEZAN A SALIR MAL LOS RESULTADOS, SOLO SALE BIEN EL PRIMER RESULTADO Y DE AHI TODO SALE -1 .. NO SE QUE HACER! AYUDA! POR FAVOR!  

POR QUE ESTO ESTA MAL? COMO DEBERIA DE SER?
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int num, i, sum=0, sum2=0;
  8.    cin >> num;
  9.  
  10. [b]while (n<=1000)[/b]{
  11.    for (i=1; i<num; i++) { if (num%i==0) { sum = sum+i;} }
  12.  
  13.        for (int j=1; j<sum; j++) { if (sum%j ==0) sum2=sum2+j; }
  14.  
  15. if (sum2 == num) {cout << sum << endl; }
  16.           else {cout << "-1"<< endl; }
  17.  
  18. [b]cin >> num<< endl;    } [/b]
  19.  
  20. }
  21.  
  22.  

[MOD] Usar las etiquetas GeShi, al publicar codigo.


« Última modificación: 17 Julio 2015, 00:07 am por simorg » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: DUDA SOBRE ESTRUCTURAS REPETITIVAS EN ESTE PROBLEMA!! C++
« Respuesta #1 en: 16 Julio 2015, 23:48 pm »

Pon el código. Es posible que no inicializes las variables bien, o que no leas correctamente la entrada.


En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: DUDA SOBRE ESTRUCTURAS REPETITIVAS EN ESTE PROBLEMA!! C++
« Respuesta #2 en: 17 Julio 2015, 00:00 am »

Las variables i, sum y sum2 tienes que inicializarlas dentro del while para que tengan su valor inicial por cada caso de prueba



Ahora, por la composición del problema, esto parece sacado de un juez en linea, por lo tanto, la manera de leer los datos no creo que sea la correcta, pues cuando te dicen:

Citar
La entrada consiste de varios casos de prueba hasta fin de archivo. Cada caso de prueba consiste en un número entero <= 1000.

No significa que hayan 1000 casos de prueba, sino que van a haber varios casos de prueba donde cada número que te entren va a ser menor o igual a 1000. Por lo tanto tu tienes que ir leyendo hasta el final del archivo los números e ir mostrando el resultado. Algo así como:

Código:
MIENTRAS NO FINAL DEL ARCHIVO
HACER
  INICIALIZAR VARIABLES
  LEER NUMERO
  REALIZAR LAS OPERACIONES
  DAR RESULTADO
FIN MIENTRAS

Espero que entiendas.

Salu2s
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicios con estructuras de control repetitivas
Ejercicios
rapser 2 12,487 Último mensaje 17 Octubre 2009, 08:05 am
por leogtz
C++ Problema propuesto usando estructuras repetitivas
Programación C/C++
Franz1628 3 3,145 Último mensaje 27 Enero 2012, 23:45 pm
por theluigy13etv
duda sobre estructuras y funciones
Programación C/C++
asdavid 3 2,809 Último mensaje 29 Noviembre 2012, 00:01 am
por durasno
Duda rapida sobre estructuras
Programación C/C++
AlucardDracula 2 1,974 Último mensaje 23 Diciembre 2013, 22:40 pm
por AlucardDracula
duda sobre estructuras y funciones
Programación C/C++
fernaEDLP 4 1,987 Último mensaje 2 Febrero 2019, 20:03 pm
por fernaEDLP
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines