Ir para o conteúdo
Wax

Arrays Bidimensional utilizando struct

Mensagens Recomendadas

Wax    0
Wax

Boas Pessoal

Fartei me de procurar algo sobre o assunto mas nao encontro nada.

Encontro tudo o que ha sobre inicializar o array,mas nao como trabalhar em conjunto com a strcut.

Aqui fica o k devo fazer:

Uma Instituição Humanitária necessita de proceder ao registo do peso e volume das

dádivas  que  recebe.  As  dádivas  podem  ser  da  categoria  alimentos,  roupa  e

medicamentos.

Habitualmente,  em  cada  dádiva  (carregamento)  existem  produtos  de  todas  as

categorias.  Pretendem  registar-se  um  máximo  de  500  carregamentos,  devendo

registar-se,  para  cada  categoria  de  produtos  recebidos,  além  do  peso  e  volume,

também uma pequena descrição.

Deve atender a que está a usar a linguagem C# e em modo console Application, ao

criar o código que vai constituir os programas pedidos.

a)    Declare a struct e o respectivo construtor e o(s) array(s) respectivo(s).

Obs. Note que pode ter 500 carregamentos e que cada carregamento pode ter 3

categorias de produtos; teremos assim um array bidimensional (carregamentos

x categorias)

e isto é o que ja fiz:

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            int nCategorias;
            
            Categorias[] carregamento = new Categorias[500];
            Console.WriteLine("Quantas categorias sao?");
            nCategorias = Int32.Parse(Console.ReadLine());
            carregamento[nCategorias] = new Categorias("Roupa  ", 32, 22, "  bom estado");
            Console.Write("\nDados da nova categoria: ");
            Console.WriteLine(carregamento[0].DevCategoria());
            Console.WriteLine("\n** Dados de Categoria do Grupo ***\n");
            int nIndex = RegistaCategoria(nCategorias, ref carregamento);
            if (nIndex != -1) // pessoa registada com êxito 
            {
                nCategorias++; // actualiza o número de categorias no grupo 
            } 
                
            
            
           
            Console.Write("\nDados do novo carregamento: ");
            Console.WriteLine(carregamento[nCategorias-1].DevCategoria());
            
        }
        static int RegistaCategoria(int nIndex, ref Categorias[] carregamento)
        {
            
            Console.Write("\n Nome: ");
            string nome = Console.ReadLine();
            Console.Write("\n Peso: ");
            int peso = Convert.ToInt32(Console.ReadLine());
            Console.Write("\n Volume: ");
            int volume = Convert.ToInt32(Console.ReadLine());
            Console.Write("\n Descriçao: ");
            string descricao = Console.ReadLine();
            carregamento[nIndex] = new Categorias(nome, peso, volume, descricao);
            return nIndex;
        } 
        struct Categorias
        {
            string Nome;
            int Peso;
            int Volume;
            string Descricao;

            //construtor
            public Categorias(string nome,int peso, int volume, string descricao)
            {
                Nome = nome;
                Peso = peso;
                Volume = volume;
                Descricao = descricao;
            }
            public String DevCategoria()
            {
                return ("Nome:" + Nome + "  Peso:" + Peso + "  Volume:" + Volume + "   Desc:" + Descricao);
            }
            // Propriedade Nome 
            public String NOME
            {
                get
                {
                    return Nome;
                }
                set
                {
                    Nome = value;
                }
            }
            public int PESO
            {
                get
                {
                    return Peso;
                }
                set
                {
                    Peso = value;
                }
            }
            public int VOLUNME
            {
                get
                {
                    return Volume;
                }
                set
                {
                    Volume = value;
                }
            }
            public String DESCRICAO
            {
                get
                {
                    return Descricao;
                }
                set
                {
                    Descricao = value;
                }
            }
        }
    }

}

Agradecia ajuda o quanto antes...tenho mesmo de entender como fazer

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Wax    0
Wax

Pessoalagradecia que me ajudacem...precisava de entender esta parte da materia...alguem m pode dar umas luzes...Relembrando que tou a trabalhar em consol.

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Wax    0
Wax

O meu problema é que por mais que o codigo pareça bem,quando o executo,ele da nao responde de forma correcta, ha algo k nao esta bem e nao sei identificar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Betovsky    2
Betovsky

Bem, sem mais informação sobre o que é suposto acontecer versus o que está a acontecer. A melhor forma é correres em modo debug e veres passo a passo o que está a acontecer.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Wax    0
Wax

Aqui fica uma soluçao para quem quiser:

namespace registo_de_alimentos
{
    class Program
    {
        static void Main(string[] args)
        {
            Bloco[,] missao = new Bloco[500, 3];
            int nCarregamentos=0;
            string[] categorias={"Alimentos","Roupa","Medicamentos"};
            for (int i = 0; i < missao.Length; i++)
            {    
                    Registar(ref missao, ref nCarregamentos, categorias);                
            }
            
        }

        static void Registar(ref Bloco[,] registos, ref int nCarregamentos, string[] categorias)
        {
            string descricao;
            double peso = 0, volume = 0;
            for (int categoria = 0; categoria < categorias.Length; categoria++)
            {
                Console.WriteLine("valores para a categoria {0}", categorias[categoria]);
                Console.WriteLine("Peso:  ");
                peso = double.Parse(Console.ReadLine());
                Console.WriteLine("Volume:  ");
                volume = double.Parse(Console.ReadLine());
                Console.WriteLine("Descriçao: ");
                descricao = Console.ReadLine();
                Bloco corrente = new Bloco(peso, volume, descricao);
                registos[nCarregamentos,categoria] = corrente;
                nCarregamentos++;

            }

        }

        struct Bloco//struct
        {
            private double peso;
            private double volume;
            private string descriacao;


            //construtor
            public Bloco (double bPeso,double bVolume,string bDescricao)
            {
                peso = bPeso;
                volume = bVolume;
                descriacao = bDescricao;
                
            }

        }

    }

}

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade