Cita: 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)
Tanto
dehm como
Italico76 han hecho la misma interpretación y ya puestos, ¿por qué no?.
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:
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;
if ( strcmp ( numero
, nueves
) == 0 ) else
for ( i
= 0; i
< N
- 1 - strlen( num
); i
++ ) 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 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 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
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
///ahora relleno con ceros las primeras posiciones
for ( i
= 0; i
< N
- 1 - strlen( num
); i
++ ) numero[i] = '0';
numero[i] = '\0';
/// Y a esos ceros les añado el numero
return true;
}
¡¡¡Saluditos!!!