Usuário com melhor resposta
Dúvida sobre como achar a maior diferença dos elementos de um determinado vetor

Pergunta
-
Boa noite galera da MSDN, tudo bem?
Estou começando a apreender programação, e em um exercício estou com uma dúvida.
Acho que o algorítimo está correto, porém ao tentar fazer a parte do cálculo da maior diferença entre os elementos de um determinado vetor, dá erro ao tentar efetuar esta ação.
Alguém pode me ajudar a solucionar o problema.
Segue abaixo o código:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /* 2) Faça um programa para calcular a maior diferença entre dois elementos consecutivos de um vetor A, com N elementos. O tamanho do vetor e seus elementos deverá ser lido via teclado. */ namespace Carlos_Vetor_02 { class Carlos_Revisao_Vetor_02 { static void Main(string[] args) { Console.WriteLine("Informe o tamanho do seu vetor: "); int tl = int.Parse(Console.ReadLine()); //Definindo a quantidade de elementos do vetor. int[] v = new int[tl]; int diferenca = 0; Console.WriteLine("Informe os valores para o vetor de tamanho " + tl);//Coletando os valores do vetor for (int i = 0; i < tl; i++) { v[i] = int.Parse(Console.ReadLine()); //Testar se o número é positivo. if (v[i] < 0) { Console.WriteLine("Numero negativo. Favor informar somente número positivo! Digite o número:"); i--; } } //========================Esta é a dúvida, aonde inserir esta parte que calcula a maior diferenca??? ================== for (int i = 0; i < tl; i++) { //Calculando a maior diferença entre os elementos do vetor. if (v[i] < v[i + 1]) //Verifica qual vetor é maior, pra fazer a diferença do maior pro menor { if (v[i + 1] - v[i] > diferenca) { diferenca = v[i + 1] - v[i]; } } if ((v[i] - v[i - 1]) > diferenca) { diferenca = v[i] - v[i + 1]; break; } } //====================================================================================================================== Console.WriteLine("\nImprimindo os valores final do vetor:"); for (int i = 0; i < tl; i++) { Console.Write("[" + v[i] + "] "); } Console.WriteLine("\n\nA maior diferenca entre os elementos do vetor é: " + diferenca); Console.WriteLine("\n\n... FIM DO PROGRAMA!!! ...\n\n"); Console.ReadKey(); } } }
Respostas
-
Bom dia solrachc_BR,
Obrigado por sua participação no Fórum MSDN.
Para encontrar a diferença entre o maior e menor item do vetor, você pode criar duas variáveis, uma para armazenar o maior valor do vetor e outra para armazenar o menor valor. Inicie essas variáveis com o valor da primeira posição do vetor, que até o momento é o menor e o maior. Depois percorra o vetor testando se os próximos valores são menores or maiores que os da primeira posição, se maior, armazene na variável para o maior valor, se menor, na variável para o menor valor. Por último é só apresentar o maior menos o menor para ver a diferença.
Abaixo, segue um exemplo:
static void Main(string[] args) { int[] myArray; int arraySize; int largestValue; int smallestValue; int difference; int check = 0; Console.WriteLine("Qual o tamanho do vetor? \n"); arraySize = int.Parse(Console.ReadLine()); myArray = new int[arraySize]; for (int i = 0; i < arraySize; i++) { Console.WriteLine("\nDigite os numeros do vetor: "); check = int.Parse(Console.ReadLine()); if (check >= 0) { myArray[i] = check; } else if (check < 0) { Console.WriteLine("Somente positivos"); i--; } } largestValue = smallestValue = myArray[0]; for (int i = 0; i < myArray.Length; i++) { if (largestValue < myArray[i]) { largestValue = myArray[i]; } if (smallestValue > myArray[i]) { smallestValue = myArray[i]; } } difference = largestValue - smallestValue; Console.WriteLine("\n" + difference); }
Atenciosamente,Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 10 de agosto de 2016 12:07