Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

T4k4h4shi

Exibir elementos de um array bidimencional

Recommended Posts

Bom dia pessoal, queria que alguem me ajudasse a entender como mostrar os valores de um array bidimencional.

O exercicio é elaborar o código em C# que, receba os tempos de cada carro e ao final das entradas, deva mostrar o tempo do pole position, o tempo médio de cada carro nas 5 voltas, o tempo médio de cada volta dos 10 carros, e Exibir o grid de largada com os 10 carros.

As 3 primeiras opções eu ja fiz segue o código abaixo.

 

 

namespace Kart

{

class Program

{

static void Main(string[] args)

 

{

// DECLARAÇÃO DAS VARIÁVEIS

int[,] tempo;

tempo = new int[10,5];

int carro;

int volta;

int carroPole;

int tempoPole;

int soma;

double media;

 

Random r = new Random();

 

// ENTRADA DOS VALORES

for(carro=0;carro<10;carro++)

for(volta=0;volta<5;volta++)

{

// ENTRADA AUTOMATIZADA PARA AUXILIAR OS TESTES DO PROGRAMA

tempo[carro, volta] = r.Next(100) + 50;

Console.WriteLine("Tempo da " + (volta+1).ToString() + "ª volta do " + (carro+1).ToString() + "º carro: " + tempo[carro, volta]);

 

// ENTRADA MANUAL QUE DEVE SER HABILITADA DEPOIS DOS TESTES

//Console.Write("Informe o tempo da " + (volta+1).ToString() + "ª volta do " + (carro+1).ToString() + "º carro: ");

//tempo[carro, volta]=int.Parse(Console.ReadLine());

}

 

// APURAÇÃO DO CARRO E DO TEMPO DO POLE-POSITION

carroPole = 0;

tempoPole = tempo[carroPole, 0];

for(carro=0;carro<10;carro++)

for(volta=0;volta<5;volta++)

if (tempo[carro, volta] < tempoPole)

{

carroPole = carro;

tempoPole = tempo[carroPole, volta];

}

Console.WriteLine("Pole position: " + (carroPole + 1).ToString() + " com o tempo de " + tempoPole.ToString() + " segundos");

 

 

// APURAÇÃO DO TEMPO MÉDIO DE CADA CARRO

for (carro = 0; carro < 10; carro++)

{

soma = 0;

for (volta = 0; volta < 5; volta++)

{

soma += tempo[carro, volta];

}

media = soma / 5;

Console.WriteLine("Tempo médio do " + (carro + 1).ToString() + "º carro: " + media.ToString());

}

 

// APURAÇÃO DO TEMPO MÉDIO DE CADA VOLTA

for (volta = 0; volta < 5; volta++)

{

soma = 0;

for (carro = 0; carro < 10; carro++)

{

soma += tempo[carro, volta];

}

media = soma / 5;

Console.WriteLine("Tempo médio da " + (volta + 1).ToString() + "ª volta: " + media.ToString());

}

 

}

}

}

 

Agora estou tentando montar e exibir o grid de largada, alguém poderia ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para exibir qualquer informação de array multidimensional basta você usar a sintaxe:

 

Array[linha, coluna].ToString();

 

Para percorrer um array você pode fazer dois For um para linhas e outro para colunas:

 

For(int lin=0; lin< Array.Length; lin++) {

For(int col=0; col< <numero de colunas>; col++) {

//Codigo

}

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então utilizei para exibir este método

 

carrogrid = 0;

posicaogrid = 0;

tempogrid = tempo[0, 0];

 

for (carro = 0; carro < 10; carro++)

{

carrogrid = 0;

tempogrid = tempo[0, 0];

 

for (volta = 0; volta < 5; volta++)

{

if (tempo[carro, volta] < tempogrid)

{

carrogrid = carro;

tempogrid = tempo[carro, volta];

 

 

}

 

 

 

}

 

 

 

 

Console.WriteLine("Grid de largada: " + (carrogrid + 1).ToString() + " com o tempo de " + tempogrid.ToString() + " segundos");

}

 

 

Só que preciso organizar... esse ta dificil. Sabe me dizer como fazer ele mostrar organizado, do menor tempo para o maior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um array não organiza os itens automaticamente, você vai precisar criar uma lógica para organizá-los, ou seja, você vai ter que criar uma função antes de exibir o Array para poder organizar os itens do maior para o menor, jogando os maiores em variáveis e fazendo substituições.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, lógica do tipo sorting é complicada, você precisa de no minimo tres variáveis, uma para a posição atual, uma para a seguinte e outra para a substituição, no seu caso creio que sejam 3 arrays unidimensionais, um deles você vai organizar todos os tempos jogando-os em arrays diferentes e separando para que eles possam ficar do maior para o menor, ou vice-versa, não há muito o que explicar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.