Jump to content
Sign in to follow this  
mcosta

Erro ao inserir no Array

Recommended Posts

mcosta

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

Share this post


Link to post
Share on other sites
MytyMyky

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


Miguel Alho - Freelancer! Website e blog - http://www.miguelalho.com

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.