Wax 0 Denunciar mensagem Publicado 18 de Janeiro de 2012 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 Ligação para a mensagem Partilhar noutros sites
Wax 0 Denunciar mensagem Publicado 19 de Janeiro de 2012 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 Ligação para a mensagem Partilhar noutros sites
Betovsky 2 Denunciar mensagem Publicado 19 de Janeiro de 2012 Qual é exactamente o teu problema? É que no teu código já estás a criar um array de Categorias. "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Wax 0 Denunciar mensagem Publicado 19 de Janeiro de 2012 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 Ligação para a mensagem Partilhar noutros sites
Betovsky 2 Denunciar mensagem Publicado 19 de Janeiro de 2012 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. "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Wax 0 Denunciar mensagem Publicado 19 de Janeiro de 2012 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 Ligação para a mensagem Partilhar noutros sites