Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Problema con ejercicio de URI
Autor Mensaje
cloferba Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Otra
Facultad Regional Santa Fe

Mensajes: 45
Agradecimientos dados: 2
Agradecimientos: 2 en 2 posts
Registro en: Sep 2014
Mensaje: #1
Problema con ejercicio de URI Dudas y recomendaciones Algoritmos y Estructuras de Datos
Hola a todos,

Estuve intentando resolver el siguiente problema de URI pero no logro que pase el IF:
https://www.urionlinejudge.com.br/judge/.../view/1159

#include <iostream>
using namespace std;

int main() {
int X, suma=0, contador=5;
do {
//leemos el numero
cin>>X;
//repetimos indefinidamente hasta que se hallen 5 numeros consecutivos pares
for ( ; ; ){
//si el numero/numero consecutivo es par..
if (X%2==0){
//..restamos el contador de numeros pares
contador--;
//y sumamos los numeros pares consecutivos
suma=(X+suma);
}
//si el numero introducido es cero, salimos del do-while
if (X==0){
break;}

//sumamos 1 al numero para verificar si su consecutivo es par
X++;
}
} while (contador!=0);
cout <<suma<<endl;
return 0;
}


No comprendo porque una vez ingreso un numero el programa no sigue avanzando. Alguna ayuda?

Gracias
29-06-2016 22:28
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
cloferba Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Otra
Facultad Regional Santa Fe

Mensajes: 45
Agradecimientos dados: 2
Agradecimientos: 2 en 2 posts
Registro en: Sep 2014
Mensaje: #2
RE: Problema con ejercicio de URI
Para quien no tiene ganas de entrar a la URL:
Cita:The program must read an integer X indefinite times (stop when X=0). For each X, print the sum of five consecutive even numbers from X, including it if X is even. If the input number is 4, for example, the output must be 40, that is the result of the operation: 4+6+8+10+12. If the input number is 11, for example, the output must be 80, that is the result of 12+14+16+18+20.
30-06-2016 16:53
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Meregistro Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 80
Agradecimientos dados: 32
Agradecimientos: 26 en 10 posts
Registro en: Feb 2010
Mensaje: #3
RE: Problema con ejercicio de URI
Se queda en un loop infinito en el for. Fijate que la condición que pusiste para que salga es que X sea igual a 0 pero a X siempre le sumás 1.
Otra cosa: el break solamente va a salir del for y no del do-while como pusiste ahi.
(Este mensaje fue modificado por última vez en: 30-06-2016 22:10 por Meregistro.)
30-06-2016 22:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Meregistro recibio 1 Gracias por este post
cloferba (30-06-2016)
cloferba Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Otra
Facultad Regional Santa Fe

Mensajes: 45
Agradecimientos dados: 2
Agradecimientos: 2 en 2 posts
Registro en: Sep 2014
Mensaje: #4
RE: Problema con ejercicio de URI
(30-06-2016 22:05)Meregistro escribió:  Se queda en un loop infinito en el for. Fijate que la condición que pusiste para que salga es que X sea igual a 0 pero a X siempre le sumás 1.

Pero al ingresar cero no tendria que salir del for automaticamente ya que hay un break?
30-06-2016 22:09
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
luchovl2 Sin conexión
Presidente del CEIT
Dígame, Ingeniero.
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.335
Agradecimientos dados: 24
Agradecimientos: 356 en 324 posts
Registro en: May 2009
Mensaje: #5
RE: Problema con ejercicio de URI
El for tiene que iterar cinco veces. Al ingresar cero tiene que salir del programa, no del lazo interno.
Recordá limpiar el acumulador ("suma") antes de usarlo para un número nuevo.
30-06-2016 23:56
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
cloferba Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Otra
Facultad Regional Santa Fe

Mensajes: 45
Agradecimientos dados: 2
Agradecimientos: 2 en 2 posts
Registro en: Sep 2014
Mensaje: #6
RE: Problema con ejercicio de URI
Te juro que no logro comprender:
1) Hay un do while que se tiene que ejecutar hasta que contador es =0
2) Si contador siempre se resta (y si hay un loop como dicen) el contador en algun momento llega a cero
3) Sin embargo, nunca sale del do while.

Esto significa que el for tiene mas importancia que la condicion establecida en el do-while? Primero tiene que salir del foro para que el do-while verifique la condicion?
01-07-2016 23:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
luchovl2 Sin conexión
Presidente del CEIT
Dígame, Ingeniero.
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.335
Agradecimientos dados: 24
Agradecimientos: 356 en 324 posts
Registro en: May 2009
Mensaje: #7
RE: Problema con ejercicio de URI
Vamos desde el principio: el enunciado pide que cuando se ingresa un número se muestre la suma de los cinco pares siguientes, a menos que se ingrese cero en cuyo caso se termina el programa.
En el código que pusiste se decrementa el contador dentro del for, pero se pregunta si vale cero en el do-while. Posiblemente lo que pasa es que se desborda luego de llegar a cero, todo dentro del for.
De todas formas, tu código está mal planteado. Tenés que ingresar un número, preguntar si es cero, si no lo es, entrar en un for en el que se suman los pares consecutivos, luego del for mostrar el resultado (limpiar el acumulador) y repetir el lazo. Si se ingresa cero, salís del lazo principal.
Es como que hiciste los lazos al revés, el de adentro afuera y viceversa.
01-07-2016 23:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 2 invitado(s)