mcosta Posted December 13, 2009 at 06:43 PM Report Share #300187 Posted December 13, 2009 at 06:43 PM Ola pessoal, estou na introdução do csharp mas agora tou com uma duvida no array!!! O código fonte que tenho é: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace vera { class Program { const int dias = 7; const int horas = 16; public bool ocupado = true; struct auditorio { public string designacao; public int hora; public int dia; public int duracao; } static auditorio[,] agenda = new auditorio[horas, dias]; static int numReg = 0; int dias_totais = 0; int horas_totais = 0; static void Main(string[] args) { int dia, hora, opcao; int duracao; string designacao, evento; do { opcao = menu() ; switch (opcao) { case 1: Console.WriteLine("Marque (a) para a marção de conferências e (😉 para a marção de reuniões"); evento =(Console.ReadLine()); Console.WriteLine("Qual a designação do assunto?"); designacao = Console.ReadLine(); Console.WriteLine("Qual a hora pretendida?"); hora = int.Parse(Console.ReadLine()); Console.WriteLine("Qual o dia"); dia = int.Parse(Console.ReadLine()); Console.WriteLine("Insira a duração"); duracao = int.Parse(Console.ReadLine()); marcar(designacao, hora, dia, duracao); break; } } while (opcao != 0); } // Função menu static int menu() { int op; Console.WriteLine("Menu"); Console.WriteLine("0: Para Sair"); Console.WriteLine("1: Marcar uma reunião ao conferência"); Console.WriteLine("2: Desmarcar reunião ou conferência"); Console.WriteLine("Opção"); op=int.Parse (Console.ReadLine()); return op; } //Marcar static void marcar (string designacao, int hora, int dia, int duracao) { //agenda[horas,dias].evento = evento; agenda[horas,dias].designacao = designacao; agenda[horas,dias].hora=hora; agenda[horas, dias].dia = dia; agenda[horas,dias].duracao=duracao; Ocupado(hora, dia, duracao); } static bool Ocupado(int dia, int hora, int duracao) { bool ocupado = true; int horaFim = hora + duracao; int horaFimReg = 0; for (int j = 0; j < agenda.Length ; j++) { horaFimReg = agenda[horas,dias].hora + agenda[horas,dias].duracao; if (((hora < agenda[horas,dias].hora) && (hora >= horaFimReg))) ocupado = false; else ocupado = true; } if (ocupado) { Console.WriteLine("Auditorio Ocupado"); } return ocupado; } } } O problema é que quando executo o programa na função marcar da-me sempre um erro que diz indice fora dos limites da matriz. Não percebo porquê!!! Alguem por favor me ajuda obrigado Link to comment Share on other sites More sharing options...
MytyMyky Posted December 13, 2009 at 10:53 PM Report Share #300221 Posted December 13, 2009 at 10:53 PM agenda[horas,dias]. .... horas e dias são contantes. o teu array tem é de auditório[16,7], mas o auditório[16,7] não existe. Os índices começam em zero, portanto o limite de agenda é a "agenda[15,6]" (o primeiro índice está no intervalo [0,15] e o segundo no intervalo [0,6]) . O ultimo índice é SEMPRE n-1 "ndice fora dos limites da matriz." significa sempre que estás, de uma forma ou de outra fora dos indices que o array permite. Espero que isso ajude 😉 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now