Ver Mensaje Individual
  #7 (permalink)  
Antiguo 16/06/2014, 03:29
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Atascado con ejercicio.

Bueno, perfecto, ahora a por la función Incrementar()!

El planteamiento que estás haciendo no es correcto.
El análisis de la cadena introducida corresponde a la propia función Incrementar(). Por eso es de tipo bool.

Si la cadena que pasas a la función Incrementar() no está compuesta enteramente por caracteres numéricos, retornará false y no hará nada, y si no es así, realizará el propio acto de incrementar la cadena, y retornará true.

Para llamar a la función, que lo haces desde la función main(), puedes o bien invocar su nombre, algo como:
Código C++:
Ver original
  1. Incrementar (lista);

Pero en éste caso nos interesa hacer uso de ella para componer la secuencia que llevaremos en main().
Entonces la puedes invocar así:

Código C++:
Ver original
  1. if (Incrementar(lista)==false) // también puedes poner if (!Incrementar(lista))
  2. {
  3.     cout<<"Lo siento la cadena no puede ser tratada bla bla bla...."<<endl;
  4. }
  5. else
  6. {
  7.     cout<<lista; //mostrará la lista ya incrementada, acción que habrá realizado la función Incrementar() cuando la hemos llamado en el "if"
  8. }

Todo esto dentro de main().

Ahora puedes seguir con el cuerpo de la función Incrementar().
Yo empezaría por la parte más fácil, que es ver si todos los valores de la cadena son números.
Para ello, recorre el array comparando el valor de cada índice. En estos casos viene bien saber que los valores numéricos del 0 al 9 tienen un valor correlativo en la tabla ASCII. Así si TODOS los valores introducidos están dentro del rango, retornarás true, pero si alguno no está en él, puedes salirte del bucle retornando false y saliendo así de la función.
Cuando tengas implementada esta funcionalidad, entonces sólo quedará implementar el algoritmo de incrementar la cadena en los términos que marca el ejercicio.

P.D. A mi este ejercicio me llevó semanas hacerlo en su momento

Última edición por dehm; 16/06/2014 a las 03:35