none
porque ta dando esse erro na matriz lugar (>_Teatro.exe!Teatro.Program.Main(string[] args) Line 20_C#) RRS feed

  • Pergunta

  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Teatro
    {
        class Program
        {
            static void Main(string[] args)
            {
                // matriz
                int[,] lugar = new int[20, 15];
                int p = 0, f = 0;
                // liberar os lugares do teatro deixando tudo com 0 
                for (int i = 0; i < 21; i++)
                {
                    for (int j = 0; i < 16; j++)
                    {
                        lugar[i, j] = 0;

                    }
                }
                string resp = "x";
                while (resp != "n")
                {
                    // assinale uma poltrona como ocupada
                    Console.WriteLine("Reserve a poltrona");
                    Console.Write("Informe a Fileira da poltrona: ");
                    f = Convert.ToInt32(Console.ReadLine());

                    Console.Write("Informe o numero da poltrona: ");
                    p = Convert.ToInt32(Console.ReadLine());

                    if (lugar[f, p] == 0)
                    {
                        lugar[f, p] = 1;
                    }
                    else
                    {
                        Console.WriteLine("poltrona ocupada");
                    }
                    // resposta
                    Console.WriteLine("deseja continuar com as reservas S/N");
                    resp = Console.ReadLine();

                }

                // exibir o conteudo da matriz
                Console.WriteLine("poltronas do teatro");
                for (int i = 0; i < 20; i++)
                {
                    Console.WriteLine("fila[" + i + "]:");
                    for (int j = 0; i < 15; i++)
                    {
                        Console.WriteLine("poltrona[" + j + "]:" + lugar[i, j]);

                    }
                    Console.ReadKey();
                }
                Console.ReadKey();
            }
        }
    }
    segunda-feira, 4 de abril de 2016 00:52

Respostas

  • Diego,

    ele tinha alguns pequenos erros. Verifica teus loops, estão inicializando j e incrementando i, onde deveria inicializar i.

    E teus valores de limites, podes pegar com o UpperBound. Fica assim:

    using System;
    
    namespace Teatro
    {
        class Program
        {
            static void Main(string[] args)
            {
                // matriz
                var lugar = new int[20, 15];
                var bound0 = lugar.GetUpperBound(0);
                var bound1 = lugar.GetUpperBound(1);
                int p = 0, f = 0;
                // liberar os lugares do teatro deixando tudo com 0
                for (var i = 0; i < bound0; i++)
                {
                    for (var j = 0; j < bound1; j++)
                    {
                        lugar.SetValue(0, i, j);
                    }
                }
    
                var resp = "x";
                while (resp != "n")
                {
                    // assinale uma poltrona como ocupada
                    Console.WriteLine("Reserve a poltrona");
                    Console.Write("Informe a Fileira da poltrona: ");
                    f = Convert.ToInt32(Console.ReadLine());
    
                    Console.Write("Informe o numero da poltrona: ");
                    p = Convert.ToInt32(Console.ReadLine());
    
                    if (lugar[f, p] == 0)
                    {
                        lugar.SetValue(1, f, p);
                    }
                    else
                    {
                        Console.WriteLine("poltrona ocupada");
                    }
                    // resposta
                    Console.WriteLine("deseja continuar com as reservas S/N");
                    resp = Console.ReadLine();
    
                }
    
                // exibir o conteudo da matriz
                Console.WriteLine("poltronas do teatro");
                for (var i = 0; i < bound0; i++)
                {
                    Console.WriteLine("fila[" + i + "]:");
                    for (var j = 0; j < bound1; j++)
                    {
                        Console.WriteLine("poltrona[" + j + "]:" + lugar[i, j]);
    
                    }
                    Console.ReadKey();
                }
                Console.ReadKey();
            }
        }
    }
    Att,


    Antero Marques

    ___________________________________________________________________________

    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.

    O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.


    • Editado Antero Marques segunda-feira, 4 de abril de 2016 06:15
    • Marcado como Resposta diegof4648 segunda-feira, 4 de abril de 2016 14:07
    segunda-feira, 4 de abril de 2016 06:13
  • Boa noite.

    Troque para:

                for (int i = 0; i < 20; i++)
                {
                    for (int j = 0; i < 15; j++)
                    {
                        lugar[i, j] = 0;
    
                    }
                }
    Tua matrix é 20 x 15, porém como os índices começam do 0, eles vão de 0 a 19.

    Edit: Como falado pelo Antero, teu último for está errado também: for (int j = 0; i < 15; i++)


    Att., Rafael Simor



    • Editado SimorC segunda-feira, 4 de abril de 2016 07:12
    • Marcado como Resposta diegof4648 segunda-feira, 4 de abril de 2016 14:12
    segunda-feira, 4 de abril de 2016 05:48

Todas as Respostas

  • Boa noite.

    Troque para:

                for (int i = 0; i < 20; i++)
                {
                    for (int j = 0; i < 15; j++)
                    {
                        lugar[i, j] = 0;
    
                    }
                }
    Tua matrix é 20 x 15, porém como os índices começam do 0, eles vão de 0 a 19.

    Edit: Como falado pelo Antero, teu último for está errado também: for (int j = 0; i < 15; i++)


    Att., Rafael Simor



    • Editado SimorC segunda-feira, 4 de abril de 2016 07:12
    • Marcado como Resposta diegof4648 segunda-feira, 4 de abril de 2016 14:12
    segunda-feira, 4 de abril de 2016 05:48
  • Diego,

    ele tinha alguns pequenos erros. Verifica teus loops, estão inicializando j e incrementando i, onde deveria inicializar i.

    E teus valores de limites, podes pegar com o UpperBound. Fica assim:

    using System;
    
    namespace Teatro
    {
        class Program
        {
            static void Main(string[] args)
            {
                // matriz
                var lugar = new int[20, 15];
                var bound0 = lugar.GetUpperBound(0);
                var bound1 = lugar.GetUpperBound(1);
                int p = 0, f = 0;
                // liberar os lugares do teatro deixando tudo com 0
                for (var i = 0; i < bound0; i++)
                {
                    for (var j = 0; j < bound1; j++)
                    {
                        lugar.SetValue(0, i, j);
                    }
                }
    
                var resp = "x";
                while (resp != "n")
                {
                    // assinale uma poltrona como ocupada
                    Console.WriteLine("Reserve a poltrona");
                    Console.Write("Informe a Fileira da poltrona: ");
                    f = Convert.ToInt32(Console.ReadLine());
    
                    Console.Write("Informe o numero da poltrona: ");
                    p = Convert.ToInt32(Console.ReadLine());
    
                    if (lugar[f, p] == 0)
                    {
                        lugar.SetValue(1, f, p);
                    }
                    else
                    {
                        Console.WriteLine("poltrona ocupada");
                    }
                    // resposta
                    Console.WriteLine("deseja continuar com as reservas S/N");
                    resp = Console.ReadLine();
    
                }
    
                // exibir o conteudo da matriz
                Console.WriteLine("poltronas do teatro");
                for (var i = 0; i < bound0; i++)
                {
                    Console.WriteLine("fila[" + i + "]:");
                    for (var j = 0; j < bound1; j++)
                    {
                        Console.WriteLine("poltrona[" + j + "]:" + lugar[i, j]);
    
                    }
                    Console.ReadKey();
                }
                Console.ReadKey();
            }
        }
    }
    Att,


    Antero Marques

    ___________________________________________________________________________

    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.

    O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.


    • Editado Antero Marques segunda-feira, 4 de abril de 2016 06:15
    • Marcado como Resposta diegof4648 segunda-feira, 4 de abril de 2016 14:07
    segunda-feira, 4 de abril de 2016 06:13
  • Obrigado pela ajudar vlw
    segunda-feira, 4 de abril de 2016 14:27
  • Obrigado pela ajudar vlw
    segunda-feira, 4 de abril de 2016 14:27