/// <summary> /// Calculoes the specified c. /// </summary> /// <param name="c">The c.</param> /// <returns>System.Int32.</returns> private int Calculo(Conferencia c) { int erro = 0; int x = ZERO; int limiteSup = c.Fim.DayOfYear - 1; int limiteInf = c.Inicio.DayOfYear - 1; //senao coloca a conferencia no seu devido lugar for (int i = limiteInf; i <= limiteSup; i++) { for (x = ZERO; x < MAXHIGH; x++) { if (TemEstaConferenciaNoArray(c, i)) { break; } if (null == conferenciasAno[i, x]) { //a variavel erro está a funcionar como contador erro++; break; } } } return(erro); }
/// <summary> /// Sees all sessoes. /// </summary> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool SeeAllConferencias( ) { int lenght = 0; Conferencia[] todasConferencia = new Conferencia[totConferencias]; for (int i = 0; i < MAXSIZE; i++) { for (int x = 0; x < MAXHIGH; x++) { if (this.conferenciasAno[i, x] == null) { ; } else { if (todasConferencia.Contains(conferenciasAno[i, x])) { ; } else { todasConferencia[lenght++] = conferenciasAno[i, x]; } } } } return(true); }
/// <summary> /// Initializes a new instance of the <see cref="OrganizadorConferencias" /> class. /// </summary> /// <param name="c">The c.</param> /// <param name="nome">The nome.</param> public OrganizadorConferencias(Conferencia c, string nome = "Investe") { this.conferenciasAno = new Conferencia[MAXSIZE, MAXHIGH]; this.totConferencias = ZERO; this.listaNomesConferencias = new string[MAXSIZE * MAXHIGH]; this.nome = nome; listaNomesConferencias[this.totConferencias++] = c.Nome; conferenciasAno[c.Inicio.DayOfYear - 1, ZERO] = c; }
/// <summary> /// Tems the conferencia number dia. /// </summary> /// <param name="c">The c.</param> /// <param name="valor">The valor.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool TemEstaConferenciaNoArray(Conferencia c, int valor) { for (int i = 0; i < MAXHIGH; i++) { if (conferenciasAno[valor, i] == c) { return(true); } } return(false); }
/// <summary> /// Procuras the na lista. /// </summary> /// <param name="c">The c.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool ProcuraNaLista(Conferencia c) { int comp = listaNomesConferencias.Length; for (int i = 0; i < comp; i++) { if (listaNomesConferencias[i] == c.Nome) { return(true); } } return(false); }
/// <summary> /// Apagas the conferencia. /// </summary> /// <param name="c">The c.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool ApagaConferencia(Conferencia c) { if (ProcuraNaLista(c)) { int posicao; int diaIni = c.Inicio.DayOfYear - 1; int diaFim = c.Fim.DayOfYear - 1; for (int i = diaIni; i <= diaFim; i++) { for (int x = 0; x < MAXHIGH; x++) { if (Search(c, out posicao)) { if (x + 1 == MAXHIGH) { conferenciasAno[i, x] = null; } else { conferenciasAno[i, x] = conferenciasAno[i, x + 1]; } } } } SortAll(); for (int i = 0; i < MAXHIGH * MAXSIZE; i++) { if (this.listaNomesConferencias[i] == c.Nome || this.listaNomesConferencias[i] == null) { if (this.listaNomesConferencias[i] == null) { break; } this.totConferencias--; break; } } return(true); } return(false); }
/// <summary> /// Searches the specified c. /// </summary> /// <param name="c">The c.</param> /// <param name="posicao">The posicao.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool Search(Conferencia c, out int posicao) { // Ou podemos fazer um simples for na lista. posicao = -1; int diaIni = c.Inicio.DayOfYear - 1; int diaFim = c.Fim.DayOfYear - 1; for (int i = diaIni; i <= diaFim; i++) { for (int x = 0; x < MAXHIGH; x++) { if (conferenciasAno[i, x] == c) { posicao = x; return(true); } } } return(false); }
/// <summary> /// Searches the name of the conferencia by. /// </summary> /// <param name="s">The s.</param> /// <param name="nomeConferencia">The nome conferencia.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool SearchConferenciaByName(out Conferencia s, string nomeConferencia) { s = new Conferencia(); if (nomeConferencia == null || totConferencias == 0) { return(false); } for (int i = 0; i < MAXSIZE; i++) { for (int x = 0; x < MAXHIGH; x++) { if (this.conferenciasAno[i, x] != null && nomeConferencia == this.conferenciasAno[i, x].Nome) { s = conferenciasAno[i, x]; return(true); } } } return(false); }
/// <summary> /// Tems the conferencia number dia. /// </summary> /// <param name="c">The c.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool TemEstaConferencia(Conferencia c) { if (totConferencias == ZERO) { ; } else if (null == conferenciasAno[c.Inicio.DayOfYear - 1, ZERO]) { ; } else { for (int i = 0; i < MAXHIGH; i++) { if (conferenciasAno[c.Inicio.DayOfYear - 1, i] == c) { return(true); } } } return(false); }
//Uma conferencia pode ter uma pausa. Exemplo começa dia 1 - 12 - 2015 e acaba dia 5 - 12 -2015 no dia 4 pode não haver eventos. /* * Todos os ciclos serão aqui colocados */ /// <summary> /// Defines the entry point of the application. /// </summary> /// <param name="args">The arguments.</param> static void Main(string[] args) { #region Vars int opcaoMenu = -1; int opcaoSubMenu = -1; OrganizadorConferencias organizador = new OrganizadorConferencias(); Conferencia conferencia = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("30-12-2015"), "Work"); Conferencia conferenciaU = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("30-12-2015"), "Work1"); Conferencia conferenciaI = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("30-12-2015"), "Work2"); Conferencia conferenciaO = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("30-12-2015"), "Work3"); Conferencia conferenciaP = new Conferencia(DateTime.Parse("29-12-2015"), DateTime.Parse("31-12-2015"), "Work4"); Sessao sessao = new Sessao(1, DateTime.Parse("30-12-2015"), DateTime.Parse("30-12-2015")); Artigo artigo = new Artigo("Programar"); Pessoa pessoa = new Pessoa(34, "Luis", TipoPessoa.autor, 1); Pessoa pessoaU = new Pessoa(21, "Parente", TipoPessoa.convidado, 2); Pessoa pessoaI = new Pessoa(70, "Patente", TipoPessoa.convidado, 3); Pessoa pessoaP = new Pessoa(70, "Patente", TipoPessoa.convidado, 3); #endregion #region Body do { RecebeOpcaoMenu(out opcaoMenu); switch (opcaoMenu) { #region 1 case 1: do { Console.Clear(); organizador.EscreveProprio(); RecebeOpcaoSubMenu(out opcaoSubMenu); } while (opcaoSubMenu != 0); break; #endregion #region 2 case 2: do { Console.Clear(); conferencia.EscreveProprio(); ComoCorreu(organizador.InsereConferenciaoAno(conferencia)); ComoCorreu(organizador.InsereConferenciaoAno(conferenciaU)); ComoCorreu(organizador.InsereConferenciaoAno(conferenciaI)); ComoCorreu(organizador.InsereConferenciaoAno(conferenciaO)); ComoCorreu(organizador.InsereConferenciaoAno(conferenciaP)); organizador.SeeAllConferencias(); RecebeOpcaoSubMenu(out opcaoSubMenu); } while (opcaoSubMenu != 0); break; #endregion #region 3 case 3: do { Console.Clear(); sessao.EscreveProprio(); ComoCorreu(conferencia.AddSessoes(sessao)); RecebeOpcaoSubMenu(out opcaoSubMenu); } while (opcaoSubMenu != 0); break; #endregion #region 4 case 4: do { Console.Clear(); artigo.EscreveProprio(); ComoCorreu(sessao.AddArtigo(artigo)); RecebeOpcaoSubMenu(out opcaoSubMenu); } while (opcaoSubMenu != 0); break; #endregion #region 5 case 5: do { Console.Clear(); ComoCorreu(artigo.AddPessoa(pessoa)); ComoCorreu(artigo.AddPessoa(pessoaU)); ComoCorreu(artigo.AddPessoa(pessoaI)); ComoCorreu(artigo.AddPessoa(pessoaP)); pessoa.EscreveProprio(); RecebeOpcaoSubMenu(out opcaoSubMenu); } while (opcaoSubMenu != 0); break; #endregion #region 0 case 0: Environment.Exit(0); break; #endregion #region Default default: Console.WriteLine("\nNot Found "); break; #endregion } } while (true); #endregion }
/// <summary> /// Compares the conferencia. /// </summary> /// <param name="sU">The s u.</param> /// <param name="sD">The s d.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public static bool CompareConferencia(Conferencia sU, Conferencia sD) { return(sU == sD); }
/// <summary> /// Escreves the conferencia. /// </summary> /// <param name="c">The c.</param> public void EscreveConferencia(Conferencia c) { Console.WriteLine(c.ToString()); }
/// <summary> /// Inseres the conferenciao ano. /// </summary> /// <param name="c">The c.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool InsereConferenciaoAno(Conferencia c) { int erro = 0; int colocadaPrimeira = 0; int x = ZERO; if (c == null) { return(false); } else { int limiteSup = c.Fim.DayOfYear - 1; int limiteInf = c.Inicio.DayOfYear - 1; int primeiraPosicao = -1; erro = Calculo(c); //existe um ou mais dias que acontece o evento if (erro == (limiteSup - limiteInf) || erro >= 1) { erro = 0; for (int i = limiteInf; i <= limiteSup; i++) { for (x = ZERO; x < MAXHIGH; x++) { //é o limite superior if (i == limiteSup) { //é a primeira vez que passa aqui? if (primeiraPosicao == -1) { primeiraPosicao = x; } //é nulo a posicao onde estamos ? if (null == conferenciasAno[i, x]) { erro = 1; conferenciasAno[i, x] = c; break; } // é a ultima vez que vai passar aqui? if (erro == 0 && (x + 1 == MAXHIGH)) { Conferencia newC = c; newC.Fim -= TimeSpan.Parse("1"); if (newC.Inicio > newC.Fim) { ApagaConferencia(c); break; } ApagaConferencia(c); if (InsereConferenciaoAno(newC)) { return(true); } } } else { //é nulo a posicao onde estamos ? if (null == conferenciasAno[i, x]) { //já foi inserida a conferencia nesse dia? if (TemEstaConferenciaNoArray(c, i)) { break; } else { if (primeiraPosicao == -1) { primeiraPosicao = x; } conferenciasAno[i, x] = c; break; } } if (i == limiteInf && x + 1 == MAXHIGH && colocadaPrimeira == 0) { Conferencia newC = c; newC.Inicio += TimeSpan.Parse("1"); if (newC.Inicio > newC.Fim) { ApagaConferencia(c); break; } ApagaConferencia(c); if (InsereConferenciaoAno(newC)) { return(true); } } } } } listaNomesConferencias[totConferencias++] = conferenciasAno[c.Inicio.DayOfYear - 1, primeiraPosicao].Nome; return(true); } } return(false); }