Cita:
Tanto dehm como Italico76 han hecho la misma interpretación y ya puestos, ¿por qué no?.Yo también lo interpreto así. Si paso la cadena "123", la función ha de transformarla en "000000124". (que no devolver, que la función lo único que devuelve es un bool)
En ese caso y para obtener una salida siempre con "nueve" caracteres, ojo que ese esel tamaño de la cadena ya que el décimo es para el caracter nulo, algo como:
Cita:
Ingrese parametro 1 de string: 0
Ingrese parametro 2 de string: 0
Ingrese parametro 3 de string: 0
Ingrese parametro 4 de string: 0
Ingrese parametro 5 de string: 1
Ingrese parametro 6 de string: 2
Ingrese parametro 7 de string: 3
Ingrese parametro 8 de string: 4
Ingrese parametro 9 de string: 9
Cadena inicial: 000012349
Cadena incrementada: 000012350
Process returned 0 (0x0) execution time
Press any key to continue.
Propongo una ligera modificación al código anteriormente expuesto:Ingrese parametro 1 de string: 0
Ingrese parametro 2 de string: 0
Ingrese parametro 3 de string: 0
Ingrese parametro 4 de string: 0
Ingrese parametro 5 de string: 1
Ingrese parametro 6 de string: 2
Ingrese parametro 7 de string: 3
Ingrese parametro 8 de string: 4
Ingrese parametro 9 de string: 9
Cadena inicial: 000012349
Cadena incrementada: 000012350
Process returned 0 (0x0) execution time
Press any key to continue.
Código C++:
Ver original
#include <iostream> #include <cctype> /// para usar la funcion "isdigit" #include <cstring> /// para usar la funcion "strcmp" y "strcat" #include <cstdlib> /// para usar la funcion "itoa" #include <cstdio> /// para usar la funcion "sprintf" #define N 5 using namespace std; bool incrementar( char numero[N] ); int main(){ char lista[N] = {0}, num [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}, num [N] = {0}; int i; for( i=0; i < N - 1; i++ ) nueves [i] = '9'; for( i=0; i < N - 1; i++ ) return false; else numero[i] = '0'; numero[i] = '\0'; return true;}
Y aprovecho para volver a poner el código comentado, ya que en el anterior mensaje me falto una línea:
Código C++:
Ver original
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++ ) ///compruebo si los caracteres son todos tipo int ///if ( numero[i] < '0' || numero[i] > '9' )...o bien lo que sigue return false; ///si llega hasta aqui es true y comparo mediante la funcion "strcmp" con la cadena de nueves ///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 ///ahora relleno con ceros las primeras posiciones numero[i] = '0'; numero[i] = '\0'; /// Y a esos ceros les añado el numero return true; }