• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mcosta

Erro ao inserir no Array

2 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora