El asunto es que a la hora de agregar datos no los ingresa donde quiero, sino en la casilla [0][0] y [1][0] de la matriz...
Alguien me podria ayudar?
Código:
#include <iostream> #include"Calendario.h" #include <algorithm> using namespace std; Calendario::Calendario(){ mat= new string* [49]; for(int i=0;i<49;i++) mat[i]=new string[8]; inicializar(); llenarHoras(); llenarDias(); } Calendario::~Calendario(){ } void Calendario::inicializar(){ for(int i=0;i<49;i++) for(int j=0;j<8;j++) mat[i][j]="-"; } string Calendario::getDia(){ return dia; } string Calendario::getHora(){ return hora; } string Calendario::getEvento(){ return evento; } void Calendario::setDia(string d){ dia=d; } void Calendario::setHora(string h){ hora=h; } void Calendario::setEvento(string e){ evento=e; } void Calendario::imprimeContenedor(){ for(int i=0;i<49;i++){ for(int j=0;j<8;j++) cout<<mat[i][j]<<"\t"; cout<<endl; } } void Calendario::setCelda(int fil, int col, string val){ mat[fil][col]=val; } string Calendario::getCelda(int fil, int col){ return mat[fil][col]; } void Calendario::llenarHoras(){ mat[1][0]="00:00"; mat[2][0]="00:30"; mat[3][0]="01:00"; mat[4][0]="01:30"; mat[5][0]="02:30"; //aqui van las demas horas, lo quite para que no se hiciera muy largo el msj mat[46][0]="23:00"; mat[47][0]="23:30"; mat[48][0]="24:00"; mat[48][0]="24:30"; } void Calendario::llenarDias(){ mat[0][0]="-"; mat[0][1]="Lunes"; mat[0][2]="Martes"; mat[0][3]="Miercoles"; mat[0][4]="Jueves"; mat[0][5]="Viernes"; mat[0][6]="Sabado"; mat[0][7]="Domingo"; } int Calendario::casillaDia(string dia){ for(int i=1;i<8;i++){ if(dia==mat[0][i]) return i; else return 0;} } int Calendario::casillaHora(string hora){ for(int i=1;i<49;i++){ if(hora==mat[i][0]) return i; else return 0;} } bool Calendario::verificaDisponibilidad(int fil, int col){ if(mat[fil][col] == "-") return true; else return false; } void Calendario::imprimirPordia(int d){ cout<<mat[0][d]<<"\t"; //imprime el dia a la izquierda for(int i=1;i<49;i++){ while(mat[i][d]!="-") cout<<mat[i][d]<<"\t"; //imprime solo los eventos, deja por fuera los dias que no tienen evento cout<<endl;} } void Calendario::imprimirPorhora(int h){ cout<<mat[h][0]<<"\t"; //para imprimir la hora a la izquierda for(int i=1;i<8;i++){ while(mat[h][i]!="-") cout<<mat[h][i]<<"\t"; //imprime solo los eventos, deja por fuera los dias que no tienen evento cout<<endl;} } int Calendario::Menu(){ int op=0; do{ system("cls"); cout<<"--------------Menu---------------"<<endl; cout<<"Para agregar evento de 1 hora de duracion digite 1 "<<endl; cout<<"Para agregar evento de 30 minutos de duracion digite 2 "<<endl; cout<<"Para ver reporte por dia digite 3 "<<endl; cout<<"Para ver reporte por hora digite 4 "<<endl; cout<<"Para Salir digite 5"<<endl; cout<<"----------------------------------"<<endl; cin>>op; }while(!(op>0 && op<6)); return op; system("cls");} void Calendario::Opciones(){ int salir=1; while(salir!=0){ switch(Menu()){ case 1: { string even,h,d; cout<<"Digite el dia: "; cin>>d; transform(d.begin(), d.end(),d.begin(), ::tolower); if(d == "lunes" || d == "martes" || d == "miercoles"|| d == "jueves" || d == "viernes"|| d == "sabado" || d == "domingo"){ cout<<"Digite la hora de inicio del evento (en formato de 24h con dos puntos separando la hora de los min, ejemplo, 13:30): "; cin>>h; if(verificaDisponibilidad(casillaHora(h),casillaDia(d))){ cout<<"Digite los detalles del evento: "; cin>>even; mat[casillaHora(h)][casillaDia(d)]=even; mat[casillaHora(h)+1][casillaDia(d)]=even; cout<<"Evento agregado satisfactoriamente..."<<endl; cout<<"Digite 1 para volver al menu principal o digite 0 para salir del programa: "; cin>>salir; } else{ cout<<"Ese espacio esta ocupado..."<<endl; cout<<"Digite 1 para volver al menu principal o digite 0 para salir del programa: "; cin>>salir; system("cls");} } else{ cout<<"Lo que digito no es un dia de la semana..."<<endl; cout<<"Digite 1 para volver al menu principal o digite 0 para salir del programa: "; cin>>salir; system("cls");} } system("cls"); break; case 2: { string even,h,d; cout<<"Digite el dia: "; cin>>d; transform(d.begin(), d.end(),d.begin(), ::tolower); cout<<"Digite la hora de inicio del evento (en formato de 24h con dos puntos separando la hora de los min, ejemplo, 13:30): "; cin>>h; if(verificaDisponibilidad(casillaHora(h),casillaDia(d))){ cout<<"Digite los detalles del evento: "; cin>>even; mat[casillaHora(h)][casillaDia(d)]=even; cout<<"Evento agregado satisfactoriamente... Regresando al menu principal"<<endl; } else{ cout<<"Ese espacio esta ocupado..."<<endl; cout<<"Digite 1 para volver al menu principal o digite 0 para salir del programa: "; cin>>salir; system("cls"); } } break; case 3: { string d; cout<<"Digite el dia: "; cin>>d; imprimirPordia(casillaDia(d)); system("pause"); } break; case 4: { string h; cout<<"Digite el dia: "; cin>>h; imprimirPorhora(casillaHora(h)); } break; case 5: { salir=0; break; } } } }