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

Acabei de me registrar aki, gostei bastante desse fórum http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Meu problema eh o seguinte, to encalhado com esse algoritmo na etapa de repeticoes e apelo pra vcs!!!

Vou dar um exemplo:

(entrada) =>Vetor: 1 3 6 6 4

(saida) => Repeticões: 2

 

entenderam né?

Eu tenho quase certeza que tem que usar 2 para, mas naum dá, eu soh consegui comparando com o 1ero numero.. <_<

 

* Façam em pascal ou portugol (se for em portugol eu dou 1 real pra qm me ajuda! :lol: )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um algoritmo que lê 5 números do usuário e verifica quantos números repetiram. Exemplo: se você digitar o número 1 cinco vezes, o programa exibirá uma mensagem dizendo que o número foi repetido 4 vezes.

 

Segue abaixo o código. Não sei ao certo se é exatamente isso o que você quer mas aí está (mude o que achar necessário):

 

algoritmo "Repetir"

// Função :

// Autor : Vergil

// Data : 16/05/2006

// Seção de Declarações

var

vet : vetor [1..5] de inteiro

cont,cont2, numero , repetidos: inteiro

 

inicio

// Seção de Comandos

para cont de 1 ate 5 passo 1 faca

leia(numero)

para cont2 de 1 ate 5 passo 1 faca

se(vet[cont2] = numero) entao

repetidos <- repetidos + 1

interrompa

fimse

fimpara

vet[cont] <- numero

fimpara

escreva ("Você repetiu ", repetidos, " números")

fimalgoritmo

 

Pode depositar R$ 1,00 na minha conta. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

inicio

// Seção de Comandos

para cont de 1 ate 5 passo 1 faca

leia(numero)

para cont2 de 1 ate 5 passo 1 faca

Não consegui encaixar aki no exercicio..

Pq você leu o numero sendo uma variavel comum certo?!

Aki eu tenho que ler o numero em vetor

O começo fika assim

 

 

para cont de 1 ate 5 faca

escreva ("Digite o numero: ")

leia (vet[cont])

fimpara

 

Acho qe ficaria diferente do seu.. tente me ajudar denovo que coloco 2 pilão na sua conta http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

 

Edit :: o que é interrompa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja..

a logica eh a seguinte..(acompanhe o raciocinio)..

 

toda vez que você entrar com um valor, você deve verificar se este numero q você esta entrando eh repetido..

entao para fazer isso basta fazer um laço de repetição q "anda" o vetor q ja foi inserido..

 

analise o trecho

repetido <- 0leia(vet[1])numero <- vet[1]para i de 2 ate LIMITE faca   leia(vet[i])   para j de 1 ate i faca	  se (vet[i] = numero) entao		  repetido <- repetido + 1	  fimse   fimpara   vet[i] <- numerofimpara
o primeiro valor do vetor sera informado fora do laço..

veja q o "para" começa em 2..

depois a variavel numero recebe o valor o primeiro valor do vetor..

aew, ja dentro do laço o usuario entra com o valor da segunda posição do vetor..

depois entra em um laço que percorre este mesmo vetor e verifica se ja houve alguma repetição..

caso a expressao "vet = numero" seja verdadeira incrementa-se a variavel repetido..

 

eh soh seguir a logica..

mas eh bom quebrar a cabeça tb..

naum existe satisfaçao melhor doq você fazer um algoritmo "dificil" sozinho, sem ajuda d ninguem..

Compartilhar este post


Link para o post
Compartilhar em outros sites

repetido <- 0leia(vet[1])numero <- vet[1]para i de 2 ate LIMITE faca   leia(vet[i])   para j de 1 ate i faca	  se (vet[i] = numero) entao		  repetido <- repetido + 1	  fimse   fimpara   vet[i] <- numerofimpara
Não funciona, testei aqui e naum funfou http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

O do Vergil foi certinho, mas naum consegui encaixar aki pq nem sei o que o interrompa faz. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

Só quero que vcs implementam isso aqui..já fiquei 1 hora tentando e nada.. :wacko:

varcont, cont2, somarep: inteirovet: vetor [1..5] de inteiroiniciopara cont de 1 ate 5 faca   escreva ("Digite o", cont, "º numero: ")   leia (vet[cont])fimparasomarep <- 0para cont de 1 ate 5 faca   para cont2 de 1 ate 5 faca	  se (cont2 <> cont) e (cont > cont2) entao		 se (vet[cont] = vet[cont2]) entao			somarep <- somarep + 1		 fimse	  fimse   fimparafimparaescreva ("Numeros repetidos:" ,somarep)fimalgoritmo
Só copiar lá pro programa, tah quase 100%, só buga quando você digita todos iguais, ou mais de 2 ou 3 iguais.. já fiz as conta e sei pq dá errado mas naum consigo uma logica correta.

Na verdade ele compara o 1-2, 1-3, 1-4, 1-5; 2-3, 2-4, 2-5; 3-4, 3-5 e 4-5.... escrevendo todos os numero iguais, a comparação com 1-2, 1-3, 1-4, e 1-5 já daria conta, iria dar 4 repeticoes, mas ele compara o 2-3, 2-4........ e no fim inves de 4 aparece 10 rep.

 

A leitura vai antes, depois que você compara se tem igual, o algoritmo de vcs lia o numero e comparava http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O do Vergil foi certinho, mas naum consegui encaixar aki pq nem sei o que o interrompa faz. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

O interrompa, é nada mais nada menos que um break. Serve pra você sair de uma estrutura de repetição, no caso, o para (for).

Compartilhar este post


Link para o post
Compartilhar em outros sites

O do Vergil foi certinho, mas naum consegui encaixar aki pq nem sei o que o interrompa faz. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

O interrompa, é nada mais nada menos que um break. Serve pra você sair de uma estrutura de repetição, no caso, o para (for).

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

varcont, cont2, somarep: inteirovet: vetor [1..5] de inteiroiniciopara cont de 1 ate 5 faca   escreva ("Digite o", cont, "º numero: ")   leia (vet[cont])fimparasomarep <- 0para cont de 1 ate 5 faca   para cont2 de 1 ate 5 faca	  se (cont2 <> cont) e (cont > cont2) entao		 se (vet[cont] = vet[cont2]) entao			somarep <- somarep + 1		 fimse	  fimse   fimparafimparaescreva ("Numeros repetidos:" ,somarep)fimalgoritmo
eh esse código tem algum erro... http://forum.imasters.com.br/public/style_emoticons/default/devil.gif

coloquei alguns numeros 2 3 vzs repetidos...deu certo

mas qndo boto td 1 ou td 4 ....enfim sempre numeros iguais ele me diz ki sao 10 os n repetidos...

 

Alguma solução????? :huh:

 

[para cont de 1 ate 5 faca

Só copiar lá pro programa, tah quase 100%, só buga quando você digita todos iguais, ou mais de 2 ou 3 iguais.. já fiz as conta e sei pq dá errado mas naum consigo uma logica correta.

Na verdade ele compara o 1-2, 1-3, 1-4, 1-5; 2-3, 2-4, 2-5; 3-4, 3-5 e 4-5.... escrevendo todos os numero iguais, a comparação com 1-2, 1-3, 1-4, e 1-5 já daria conta, iria dar 4 repeticoes, mas ele compara o 2-3, 2-4........ e no fim inves de 4 aparece 10 rep.

Pois eh...ainda buga......não tah funfando!!!galera.... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

A leitura vai antes, depois que você compara se tem igual, o algoritmo de vcs lia o numero e comparava

Leitura antes???lendo antes conserta o bug??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, pessoal!

 

Segue aqui minha contribuição para o tópico...

 

Como é possível que a lista de números tenha repetições de números diferentes como:

2,2,1,5,5

 

Ou ainda, que a lista tenha todos números repetidos como:

1,1,1,1,1

 

Existem ainda outras possibilidades que podem causar problemas de repetições na contagem, como vocês já devem ter observado.

 

Sendo assim, minha proposta é de, após a leitura de todos os números, colocá-los em ordem crescente (usei uma forma bem simplificada de ordenação).

 

Após ordenado, basta percorrer o vetor ENQUANTO o número continuar sendo igual.

 

Vejam abaixo:

 

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.

Notem também o seguinte: a variável maxrep é que armazenará o maior número de repetições encontradas, ou seja, armazenará a contagem do número que mais se repete. Isto porque pode ocorrer de dois ou mais números repetirem-se... neste caso, ele só dará o resultado da maior contagem de repetição. Por exemplo, em:

2,2,5,5,5 - ele encontrará DUAS repetições do 2 e TRÊS repetições do 5 - e ficará apenas com a maior: TRÊS.

 

É isso!

 

Espero ter sido clara.

 

Abraços a todos,

 

Luciana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Notem também o seguinte: a variável maxrep é que armazenará o maior número de repetições encontradas, ou seja, armazenará a contagem do número que mais se repete. Isto porque pode ocorrer de dois ou mais números repetirem-se... neste caso, ele só dará o resultado da maior contagem de repetição. Por exemplo, em:2,2,5,5,5 - ele encontrará DUAS repetições do 2 e TRÊS repetições do 5 - e ficará apenas com a maior: TRÊS.É isso!Espero ter sido clara.Abraços a todos,Luciana.

Oi Lú!! Você foi muito clara, se deixou intender..como diz Faustaum...mais do que nunca! :D Gostaria que você me ajudasse...nesse finzinho ai....como imprimir quais numeros foram repetidos e quantos?Exemplo:na sequencia 2,2,5,5,5('O numero 2 foi repetido 2 vezes')(o numero 5 foi repetido 3 vezes')Abraço pa tu i todos tbm http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Lú!! Você foi muito clara, se deixou intender..como diz Faustaum...mais do que nunca! :D Gostaria que você me ajudasse...nesse finzinho ai....como imprimir quais numeros foram repetidos e quantos?Exemplo:na sequencia 2,2,5,5,5('O numero 2 foi repetido 2 vezes')(o numero 5 foi repetido 3 vezes')Abraço pa tu i todos tbm http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Olá, Lokossa!Minha sugestão para resolver o problema desta forma (que, aliás, torna-o muito interessante e desafiador!) é a de usar dois vetores auxiliares:- um vetor iria armazenar o número que se repete (o dois e o cinco do exemplo acima)- o outro vetor armazenaria a quantidade de repetições referentes aos números do vetor anterior (por exemplo, 2 e 3, que referem-se, respectivamente, às repetições do dois e do cinco citados no exemplo anterior).É isso! Que tal alguém arriscar-se a desenvolver a lógica? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Abraços,Luciana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saquei, é só controlar um cont para cada repetido... boa pergunta essa do nosso amigo forista Lokossa.

É isso aí, NorTher!Que tal postar um algoritmo com a sugestão de solução!Assim eu ficaria satisfeita em notar que este tópico foi totalmente "compreendido", já que foi você que o inaugurou, certo?!E então? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Abraço,Luciana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saquei, é só controlar um cont para cada repetido... boa pergunta essa do nosso amigo forista Lokossa.

É isso aí, NorTher!Que tal postar um algoritmo com a sugestão de solução!Assim eu ficaria satisfeita em notar que este tópico foi totalmente "compreendido", já que foi você que o inaugurou, certo?!E então? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Abraço,Luciana.
ehheehEhe, beleza, vo tentar fazer depois eu posto http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso aí, NorTher!Que tal postar um algoritmo com a sugestão de solução!Assim eu ficaria satisfeita em notar que este tópico foi totalmente "compreendido", já que foi você que o inaugurou, certo?!E então? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Abraço,Luciana.

Agora você falou que nem uma professora que eu tive. :lol: Deu até vontade de fazer do jeito que você passou, mas tem hora que dá uma preguiça... http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Mas vou ver se consigo fazer um algoritmo do tipo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não eh tao facil quanto parece, to quebrando a cabeça, vo abandonar a tarefa, pq tenho que fazer outro trabalho e amanha tento denovo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, a Luciana me deu uma tarefa (complicada por sinal :o )

 

BUGS CORRIGIDOS, TAH FUNFANDO 99% AGORA.. :P

Tá ae a versão 1.0 ;)

 

 

algoritmo "Repetidos"// Autor : FeLiPe// Data : 6/6/2006// Seção de Declaraçõesvarvet: vetor [1..5] de inteirorep: vetor [1..5] de inteirosom: vetor [1..5] de inteirocont, cont2, cont3, numero, somarep, contrep: inteiroachou: logicoiniciopara cont de 1 ate 5 faca   // ler numeros   escreva ("Digite o", cont, "º numero: ")   leia(vet[cont])   // guardar numero do vetor numa varivel   numero <- vet[cont]   para cont2 de 1 ate 5 faca	  // se posicao do vetor é diferente da do numero	  se cont <> cont2 entao		 se (vet[cont2] = numero) entao			// pesquisar se o numero já se encontra na parada			achou <- verdadeiro			cont3 <- 1			contrep <- 0			repita			   se cont<>cont3 entao				  se vet[cont3] = numero entao					 contrep <- contrep + 1					 achou <- falso				  fimse			   fimse			   cont3 <- cont3 + 1			ate (cont3>5)			se achou=falso entao			   cont3 <- 1			   repita				  se rep[cont3] = numero entao					 // escrever em cima do valor identico					 cont <- cont3				  fimse				  cont3 <- cont3 + 1			   ate (cont3>5)			   // se numero naum esta no vetor incluir num vetor de numeros repetidos			   rep[cont] <- numero			   som[cont] <- contrep			fimse			// -------- FIM PESQUISA ---------			// contador de repetidos			somarep <- somarep + 1			interrompa		 fimse	  fimse   fimparafimparaescreval ("Numero de valores repetidos:", somarep)escreval// saídapara cont de 1 ate 5 faca   se rep[cont] <> 0 entao	  escreval ("Numero", rep[cont], " repetido....", som[cont], " vez(es).")   fimsefimparafimalgoritmo
Valeu Luh!?!? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh man....bom trabalho aew!..você zerou os contadores?pode ser isso qndo da esses errinhos bestas!

Já corrigi os bugs, quando eu testei parecia estar tudo OK, no seu dá erro ainda?

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.