20/09/2014, 22:22
|
| | Fecha de Ingreso: marzo-2014
Mensajes: 41
Antigüedad: 10 años, 9 meses Puntos: 0 | |
Problema al ingresar datos a matriz Hola estaba haciendo algo como un semanario en C++, entonces creo que lo mas sencillo es hacerlo como una matriz (horas a la izquierda y dias arriba)...
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;
}
}
}
}
Última edición por newb; 20/09/2014 a las 22:28 |