Gracias
@vangodp .. en este ejercicio creo complica asi que me va a tocar dejarlo como antes
La verdad queria aprender algo con este ejercicio pero me volvi loco con castings de char* a entero, de const char a char* ... etc! es de locos!
Sera que ya que el compa viene demorado con el ejercicio.....de paso me ayudan a mi tambien a cerrar lagunas ?
Código C:
Ver original#include <string>
#include <cstring>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <sstream>
using namespace std;
// esta me funcionó en g++ pero no me sirve creo
string rellenar_str(string str,char chr='0',int long_esperada=10,bool izq=true)
{
int l;
if (l < long_esperada){
for (int i=0;i<(long_esperada-l);i++){
if (izq)
str = chr+ str;
else
str +=chr;
}
}
return str;
}
void rellenar_array_chars(const char str[],char chr='0',int long_esperada=10,bool izq=true)
{
int l;
if (l < long_esperada){
for (int i=0;i<(long_esperada-l);i++){
if (izq)
str = chr+ str;
else
str +=chr;
}
}
}
bool Incrementa(char numero[10])
{
for (int i
=0;i
<strlen(numero
);i
++) if (numero[i]<48 || numero[i]>57){
cout << "Error : no son solo numeros!" << endl;
return false;
}
int integer;
string str;
integer++;
stringstream ss;
ss << integer;
str = ss.str();
const char* char_arr = str.c_str();
rellenar_array_chars(char_arr);
//cout << integer;
numero = char_arr; // error: invalid conversion from 'const char*' to 'char*' ???????
if ( strcmp( numero
, "999999999" ) == 0 ) numero[0] = '0', numero[1] = '\0';
return true; // arreglar
}
int main(void)
{
char s1[]="0000000552";
char s2[]="900000173";
Incrementa(s1);
Incrementa(s2);
cout << s1 << endl;
cout << s2 << endl;
}
No me funciona........ obviamente chilla al hacer:
Como se arregla el programa que esta hasta ahora escrito ? (he tomado fragmentos de otros contribuidores
)