¿ Cuál puede ser el problema ?
P.D: no se debe cambiar los encabezados de las funciones, ni se debe llamarlas de otra manera.
Código:
char* to_string(Rarray<Partido**> sol1) { int TAM=1000; //int TAM = 5 // la fecha + el dia + el ';' + los '()' + la ',' static char* cad = NULL; char* retornar= NULL; //char *cad, *retornar = NULL; cad = new char[TAM]; char buffer[4]; retornar = cad; //strcpy(retornar,""); for(int i=0;i<DIMENSION_PROBLEMA;i++){ for(int j=0;j<DIMENSION_PROBLEMA;j++){ strcat(retornar,"("); int fecha = sol1[i][j]->getFecha(); sprintf(buffer,"%d",fecha); strcat(retornar,buffer); strcat(retornar,","); int dia = sol1[i][j]->getDia(); sprintf(buffer,"%d",dia); strcat(retornar,buffer); strcat(retornar,")"); } if(i!=DIMENSION_PROBLEMA-1){ strcat(retornar,";"); } } // cout << prueba << endl;*/ cout <<"La cadena cad antes del return es: "<< cad << endl; cout <<"La cadena retornar antes del return es : " <<retornar << endl; //cout <<"La direccion de memoria de cad[0] antes del return es: " << &cad)<<endl; return &cad[0]; } void to_Solution(char *_string_, Rarray<Partido**> &_var){ //en realidad el cabezal es: Solution::to_Solution(char *_string_) //tambien hay que sustituir DIMENSION_PROBLEMAENSION_PROBLEMA por pbm.DIMENSION_PROBLEMAension() //PRIMERO ACOMODO CADA FILA EN CADA CELDA DEL ARREGLO SUBSTRING char* substring[DIMENSION_PROBLEMA]; char* p; char* aux; p =strtok(_string_,";"); aux=p; substring[0]=aux; int pos=1; while (p){ p=strtok(NULL,";"); if (p){ aux=p; substring[pos]=aux; pos++; } } //AHORA PROCESO CADA CELDA DEL ARREGLO DE FORMA DE OBTENER LOS NROS DE //LA FILA PARA IR GUARDANDO EN EL SOLUTION char* subcadena_aux; for (int i=0; i<DIMENSION_PROBLEMA; i++){ int j=1;//me muevo por el char* int acumulador=0; subcadena_aux = substring[i]; cout << "SUBCADENA: "<< i << endl; while(acumulador<DIMENSION_PROBLEMA){ subcadena_aux = substring[i]+j; p = strtok(subcadena_aux, ","); int tam_primer_num=strlen(p); int fecha = atoi(p); cout << "El primer numero es: " << fecha << endl; p = strtok(NULL, ")"); int tam_segundo_num=strlen(p); int dia = atoi(p); cout << "El segundo numero es: " << dia << endl; _var[i][acumulador]->setFecha(fecha); //descomentar _var[i][acumulador]->setDia(dia); //descomentar j = j + tam_primer_num + tam_segundo_num + 3;//el tres es por los caracteres extras de la cadena acumulador++; } } } //end Solution::to_Solution int main() { //EJEMPLO DE UNA ENTRADA DE STRING CON DIMENSION_PROBLEMA 4 //char entrada[]= "(-1,-1)(2,1)(3,4)(1,2);(1,2)(-1,-1)(2,1)(3,4);(3,4)(1,2)(-1,-1)(2,1);(2,1)(3,4)(1,2)(-1,-1)"; int arreglo1[DIMENSION_PROBLEMA-1]; Rarray<Partido**> sol1(DIMENSION_PROBLEMA); Rarray<Partido**> sol2(DIMENSION_PROBLEMA); inicializar(sol1, arreglo1); rellenar(arreglo1,sol1); //char* salida = to_string(sol1); //cout << " La salida es: "<< salida << endl; to_Solution(to_string(sol1),sol2); ImprimirMatriz(sol2); return 0; }