¡¡¡La de Dios!!!, amigo Italico76, la has liado parda.
Propongo esta solución , de las muchas posibles:
Código C++:
Ver original#include <iostream>
#include <cctype> /// para usar la funcion "isdigit"
#include <cstring> /// para usar la funcion "strcmp"
#include <cstdlib> /// para usar la funcion "itoa"
#include <cstdio> /// para usar la funcion "sprintf"
#define N 10
using namespace std;
bool incrementar( char numero[N] );
int main(){
char lista[N] = {0};
for( int i = 0; i < N - 1; i++ ){
cout << "Ingrese parametro " << i + 1 << " de string: ";
cin >> lista[i];
}
cout << endl << "Cadena inicial: " << lista << endl;
if ( !incrementar( lista) )
cout << "Lo siento la cadena no puede ser tratada." << endl;
else
cout << "Cadena incrementada: " << lista << endl;
return 0;
}
bool incrementar(char numero[N]){
char nueves [N] = {0};
for( int i=0; i < N - 1; i++ )
nueves [i] = '9';
for( int i=0; i < N - 1; i++ )
return false;
if ( strcmp ( numero
, nueves
) == 0 ) else
return true;
}
Observar que me he curado en salud usando en un #define el tamaño de la cadena de nueves. Sí, sé que este caso es "999999999", pero ¿ y si el guasón del que marcó el ejercicio varía el número de 9?. Pues yo lo tengo fácil, basta cambiar el valor de N en el #define.
Y aquí la función "bool incrementar" con comentarios:
Código C++:
Ver originalbool incrementar(char numero[N]){
char nueves [N] = {0};
for( int i=0; i < N - 1; i++ )
nueves [i] = '9';
for( int i=0; i < N - 1; i++ )
///compruebo si los caracteres con todos tipo int
///if ( numero[i] < '0' || numero[i] > '9' )...o bien lo que sigue
///si llega hasta aqui es true y comparo mediante la funcion "strcmp" con la cadena de nueves
if ( strcmp( numero
, nueves
) == 0 ) ///y si coincide copio "0" en la cadena con la funcion "sprintf"
///si no, ahora viene el incremento del numero
///"atoi" es una funcion que obtiene un int de una cadena
///y "sprintf" como dije permite pasar a cadena un int.... y mucho mas!!!
else
return true;
}
¡¡¡Saluditos!!!