Ir para conteúdo

POWERED BY:

Arquivado

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

NorTheR

Vetores -> Identificar repeticões

Recommended Posts

var
   cont, cont2, somarep, maxrep, aux: inteiro;
   vet: vetor [1..5] de inteiros;

inicio

   { **** Leitura de dados do vetor **** }
   para cont de 1 até 5 faça
	  escreva ('Digite o ', cont, 'º numero: ');
	  leia (vet[cont]);
   fim para;

   { **** Ordena os dados do vetor em ordem crescente **** }
   para cont de 1 até 4 faça
	  para cont2 de cont+1 até 5 faça
		 se vet[cont] > vet[cont2] então
			aux		<- vet[cont];
			vet[cont]  <- vet[cont2];
			vet[cont2] <- aux;
		 fim se;
	  fim para;
   fim para;

   { **** Busca por repetidos no vetor já ordenado **** }
   maxrep <- 0;
   cont <- 1;
   { **** Este laço é para percorrer TODOS os elementos do vetor até o penúltimo **** }
   enquanto cont <= 4 faça
	  { **** ... e este percorre os elementos POSTERIORES do mesmo vetor...
			 ... enquanto forem iguais aos seus antecessores. **** }
	  somarep <- 1;
	  enquanto (vet[cont] = vet[cont+1]) e (cont<5) faça
			somarep <- somarep + 1;
			cont <- cont +1;
	  fim enquanto;

	  { **** Só aumenta o contador caso não tenha encontrado repetição do número **** }
	  se somarep = 1 então
		 cont <- cont + 1;
	  fim se;

	  se somarep > maxrep então
		 maxrep <- somarep;
	  fim se;

   fim enquanto;


   { **** Impressão do resultado **** }
   escreva ('Numeros repetidos:' ,maxrep);
fim.

Luciana, sinto em lhe informar, mas acredito que seu algoritmo está errado, teste a seguinte entrada: 5,7,5,5,3. Não intendi porque começa a testar a partir do vetor[1] "/

fiz algumas alterações, agora acho que está ok, segue:

Inicio
	constante inteiro N <- 5
	inteiro vet[N]
	inteiro cont, cont2, somarep, aux, maxrep
	//Ler Vetor
	para cont de 0 ate N - 1 passo 1
		escrever "Digite um numero V[",cont,"]: "
		ler vet[cont]
	proximo
	//Ordenar Vetor
	para cont de 0 ate N - 1 passo 1
		para cont2 de cont+1 ate N - 1 passo 1
			se (vet[cont] > vet[cont2]) entao
				aux <- vet[cont]
				vet[cont] <- vet[cont2]
				vet[cont2] <- aux
			fimse
		proximo
	proximo
	//Mostar Vetor Ordenado
	para cont de 0 ate N - 1 passo 1
		escrever "\nVetor Ordenado V[",cont,"]: ",vet[cont],""
	proximo
	maxrep <- 0
	cont <- 0
	enquanto (cont < N) faz
		somarep <- 0
		enquanto (vet[cont] = vet[cont+1] E (cont < 5)) faz
			somarep <- somarep + 1
			cont <- cont + 1
		FimEnquanto
		escrever "\nSoma Repetidos: ",somarep,""
		escrever "\nCont: ",cont,""
		se (somarep = 0) entao
			cont <- cont + 1
		fimse
		maxrep <- maxrep + somarep
	FimEnquanto
	escrever "\nNumeros Repetidos: ",maxrep,""
Fim

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.