Numeros Repetidos Em Vetor!
#1
Posted 22/10/2008, 18:46
Alguem poderia me Ensinar como verificar se em um vetor ja esxiste um Numero e exibir a mensagen?
Exemplo:
um vetor de 10 Posiçoes, mando o Usurio Inserir os 10 Numeros!
se ele digitar um Numero que ja esta no veror!
exibir uma mensagen!
"O numero Ja foi Digitado"
e pedir para digirar novamente!
eu achei na net um pronto!! vejam!
vet:vetor[1..5]de inteiro
i,j,nlido,teste,igual:inteiro
inicio
PARA i DE 1 ATE 5 FACA
teste <- 1
enquanto (teste<>0) faca
escreva("Digite numero: ")
leia(vet[i])
igual <- 0
para j de 1 ate i faca
se ((vet[i]=vet[j]) e (i<>j)) entao
escreval("Esse numero ja foi digitado !")
igual<-1
fimse
fimpara
se (igual=0) entao
teste<-0
fimse
fimenquanto
FIMPARA
Mas ele pronto assim eu nao consigo intender!
nem para que serve essas variaveis, teste, igual ETC!
alguem poderia me ajudar a intender melhor como fazer??
#2
Posted 22/10/2008, 23:55
int dados[]; ( vetor de inteiros )
e o numero a ser verificado:
int verifica; (variavel para um inteiro );
a forma mais simples de você fazer isso é fazendo uma busca linear no vetor.
uma buscar linear seria uma busca numero por numero, do primeiro ao ultimo, ou do ultimo para o primeiro, mas tem que ser sempre assim, reta(linear), entre uma posição e outra.
let's go:
int dados[];int verificar;para j=0 até o tamanho do vetor -1 faça // usei 0 e tamanho -1 um para ficar mais proximo de uma linguagem de programação se dado[j] == verifica Imprime "Opa, o danado esta na posicao j" fim sefim para
Edição feita por: Édipo Costa Rebouças, 22/10/2008, 23:58.
#3
Posted 23/10/2008, 10:48
maninho, pensa que você já tem esse vetor
int dados[]; ( vetor de inteiros )
e o numero a ser verificado:
int verifica; (variavel para um inteiro );
a forma mais simples de você fazer isso é fazendo uma busca linear no vetor.
uma buscar linear seria uma busca numero por numero, do primeiro ao ultimo, ou do ultimo para o primeiro, mas tem que ser sempre assim, reta(linear), entre uma posição e outra.
let's go:int dados[];int verificar;para j=0 até o tamanho do vetor -1 faça // usei 0 e tamanho -1 um para ficar mais proximo de uma linguagem de programação se dado[j] == verifica Imprime "Opa, o danado esta na posicao j" fim sefim para
Tipo assim Edipo!
eu consigo fazer se o vetor ja estiver com os numeros!
de uma olhada!!
vet:vetor[1..5]de inteiro
mlido,i:inteiro
vet[1] <- 10
vet[2] <- 20
vet[3] <- 30
vet[4] <- 40
vet[5] <- 50
escreva ("Digite um numero")
leia (nlido)
i <- 1
ENQUANTO (vet[i] = nlido) e (i < 5) FACA
i <- i + 1
FIMENQUANTO
Se vet[i] = nlido ENTAO
escreva ("O numero esta no vetor")
FIMSE
So que ai eu ja considerei que o vetor estava com os Numeros!
eu estou tentano tipo!
eu inserir 5 valores no vetor por Digito!
e se eu digitar um valor que ja digitei ele dar a MEnsagen!!
#4
Posted 23/10/2008, 12:30
[codebox]
função verificaVetor(int dados[]; int verificar)
para j=0 até o tamanho do vetor -1 faça // usei 0 e tamanho -1 um para ficar mais proximo de uma linguagem de programação
se dado[j] == verificar
retorna verdadeiro // retorna verdadeiro( true ) se achar o numero no vetor e encerra a função aqui.
fim se
fim para
retorna falso // se não achar nada, retorna falso
fim função verificaVetor
[/codebox]
Essa função recebe como parametro o vetor de dados e o inteiro a ser verificado.
Se achar alguma coisa ela retorna true, e quando ela retorna ela encerra a função, não tem mais loop, mais nada, é um padrão de linguagem de programação
Quando ele percorrer todo o loop e não achar nada, ela vai sair dele e retorna falso, avisando que o numero ainda não se encontra no vetor e encerrando a função por ai.
vamos usar essa função para nos ajudar a resolver o problema:
[codebox]
int dados[]; // vetor de dados
int verificar; // dado a ser verificado
int contador=0; //contador para nos auxiliar no enquanto ( while )
enquanto contador < 5 // aqui ele verifica se o contador é menor que 5( considerando 0 a 4 são 5 elementos )
leia(verificar)
se verificaVetor(dados, verificar) //Aqui ele manda o vetor e o dado digitado para rodar na função, sendo que a função retorna vedadeiro ou falso, o "SE" vai usar esse dado para executar ou não executar sua instrução (a mensagem de erro ) ou pular para o se não ( inserção de dados no vetor )
"epa, esse numero já existe neste vetor, tente outra boa sorte"
se não
dado[contador] = verificar; // inserção de dados no vetor com auxilo do contador como indice
contador = contador + 1; // aqui ele soma mais um ao contador depois de inserir o dado no vetor, sendo que quando o contador chegar a 5 o loop acaba.
fim se
fim enquanto
[/codebox]
Edição feita por: Édipo Costa Rebouças, 23/10/2008, 12:35.
#5
Posted 23/10/2008, 14:08
então manunho continua a mesma coisa, mais, vamos dividir um pouco esse código, vou usar o conceito de função aqui.
função verificaVetor(int dados[]; int verificar) para j=0 até o tamanho do vetor -1 faça // usei 0 e tamanho -1 um para ficar mais proximo de uma linguagem de programação se dado[j] == verificar retorna verdadeiro // retorna verdadeiro( true ) se achar o numero no vetor e encerra a função aqui. fim se fim para retorna falso // se não achar nada, retorna falsofim função verificaVetor
Essa função recebe como parametro o vetor de dados e o inteiro a ser verificado.
Se achar alguma coisa ela retorna true, e quando ela retorna ela encerra a função, não tem mais loop, mais nada, é um padrão de linguagem de programação
Quando ele percorrer todo o loop e não achar nada, ela vai sair dele e retorna falso, avisando que o numero ainda não se encontra no vetor e encerrando a função por ai.
vamos usar essa função para nos ajudar a resolver o problema:int dados[]; // vetor de dadosint verificar; // dado a ser verificadoint contador=0; //contador para nos auxiliar no enquanto ( while )enquanto contador < 5 // aqui ele verifica se o contador é menor que 5( considerando 0 a 4 são 5 elementos ) leia(verificar) se verificaVetor(dados, verificar) //Aqui ele manda o vetor e o dado digitado para rodar na função, sendo que a função retorna vedadeiro ou falso, o "SE" vai usar esse dado para executar ou não executar sua instrução (a mensagem de erro ) ou pular para o se não ( inserção de dados no vetor ) "epa, esse numero já existe neste vetor, tente outra boa sorte" se não dado[contador] = verificar; // inserção de dados no vetor com auxilo do contador como indice contador = contador + 1; // aqui ele soma mais um ao contador depois de inserir o dado no vetor, sendo que quando o contador chegar a 5 o loop acaba. fim sefim enquanto
Edipo se nao for te pedir muito sera que voce poderia Digitar em Portugues?
igual eu digitei acima?
hehe e que nao intendo muito esta linguagem que voce digitou!!
Obrigado!
#6
Posted 23/10/2008, 14:43
por favor não use a opção citar, como é só eu e vc por enquanto, não precisa disso;
só comparando você usa isso <- para atribuir valor a uma variavel, eu uso isso =
para comparar se é igual você usa isso =, eu uso isso ==
para comparar se é diferente eu acho que você usa <>, eu uso isso !=
para mostra que uma variavel é inteiro eu uso int variavel, você usa variavel:Inteiro
sendo que int h, i, j é igual a h, i ,j :Inteiro
Edição feita por: Édipo Costa Rebouças, 23/10/2008, 14:50.
#7
Posted 23/10/2008, 16:46
e nao entendi esta parte
se verificaVetor(dados, verificar)
eu nao entendi oq isso significa e nem
como escrever isso em portugues rsrsrs ;D
Edição feita por: Diegostf, 23/10/2008, 16:47.
#8
Posted 23/10/2008, 20:12
se i < 8
a expressão i < 8 retorna true( verdade ) ou false ( falso ) dependendo do valor da variavel i para o "SE", se a expressão for verdadeira ele executa o que esta no "SE", caso contrario ele executa o que esta no "SE NÃO", se não tiver um "SE NÃO", o proximo código depois do termino do "SE" é executado.
da mesma forma verificaVetor(dados, verificar) vai retorna true ou false, conforme o algoritimo que esta no primeiro código. dados e verificar são respectivamente o vetor e o numero a ser verificado que a função verificaVetor ultiliza no seu algoritimo. Eles não precisariam ter os mesmo nomes, mas só seguir as mesmas posições que estão indicados no ( ) do primeiro código.
Eu usei esse conceito de função pois ajuda a enteder melhor o código, e caso você precise usar a mesma coisa em outro algoritimo, vai ser só copiar e colar.
Eu vou dar um exemplo mais simples que esse de função para você entender melhor. ele vai ajudar a gente imprimir um lista de nomes e RGs com uma numeração do lado.
a nomeclatura String(inglês), quer dizer Cadeia de Caracteres ou de uma forma mais simples um texto qualquer.
função imprimirAluno( int Numeção, String Nome, String RG) Imprimir Numerção + " nome: " + Nome + " RG: " + RG + pular uma linha;fim imprimirCabeçalho
agora vou escrever um código que usa essa função.
String aluno[0] = "Carlos Daniel" String aluno[1] = "Daniel Carlos " String aluno[2] = "Carlos Porrete" String aluno[3] = "Carlos CuZino" String aluno[4] = "Carlos ziNocu"String rg[0] = "111111111";String rg[1] = "222222222";String rg[2] = "333333333";String rg[3] = "444444444";String rg[4] = "555555555";para int i = 0 até 4 faça imprimirAluno(i+1, aluno[i], rg[i] );/* Aqui é passado esses valores como parametro para a função imprimirAluno(), os valores colocados aqui, ficaram no lugar dos valores declarados lá ná função,aquele algoritmo é vai rodar com os variaveis com os valores declarados aqui , int Numeção = i+1, String Nome = aluno[i] e String RG = rg[i]. A função dessa função(que redundante não), melhor dizendo o que elá faz é imprimir os valores que foram passados para ela, diferente da verificaVetor, que faz uma pequena logica e retorna verdadeiro ou falso. */fim para
a saida na tela desse algoritimo seria isso:
1 nome: Carlos Daniel RG: 111111111
2 nome: Daniel Carlos RG: 222222222
3 nome: Carlos Porrete RG: 333333333
4 nome: Carlos CuZino RG: 444444444
5 nome: Carlos ziNocu RG: 555555555
Tomara que á ideia de função tenha ficada um pouco mais clara para você
Edição feita por: Édipo Costa Rebouças, 23/10/2008, 20:55.
#9
Posted 18/09/2009, 13:32
exemplo o numero 5 foi inserido 10 vezes e coi mais repitido que os outros, então o vetor tem que guardar a qntidade de vezes que ele foi repetido. quem souber favor me enviar por email!!!
wsouza9@gmail.com
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)