FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 759.132 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 27-10-2003, 14:34   #1 (permalink)
ebanton
Super Participante
 
Registrado em: May 2003
Localização: Lajeado - RS - 95900-000
Idade: 27
Mensagens: 637
Reputação: 19 ebanton está indo no caminho certo
Enviar mensagem via ICQ para ebanton Enviar mensagem via MSN para ebanton Enviar mensagem via Skype para ebanton
Padrão Problema com Algoritmo

Estou tendo que fazer um algoritmo pra faculdade...coisa facil, mas eu não estou conseguindo fazer uma parte....a tarefa é a seguinte:
Escreva um algoritmo que leia 20 valores inteiros, armazenando-os em dois vetores de tamanho 10, "v1" e "v2". Em seguida exiba os valores comuns aos dois vetores, com o cuidado de escrever apenas uma vez cada número. Por exemplo, o número 2 só deverá ser exibido se estiver presente em ambos os vetores, uma ou mais vezes em cada um deles.
Eu consegui fazer quase todo ele, só estou com problema para ele nao exibir os numeros uma vez.
Abaixo segue o algoritmo, com a sintaxe que eu uso em aula. É bem facil de entender, se alguem souber algo poste aqui.

ALGORITMO TAREFA13
INÍCIO
INTEIRO V1[10], V2[10], V3[10], C1, C2, C3;
PARA C1 DE 0 ATÉ 9 FAÇA
V1[C1] <-- LEIA_INTEIRO("ENTRE COM UM NÚMERO");
V2[C1] <-- LEIA_INTEIRO("ENTRE COM UM NÚMERO");
FIM_PARA
PARA C1 DE 0 ATÉ 9 FAÇA
PARA C2 DE 0 ATÉ 9 FAÇA
SE (V1[C1]==V2[C2]) ENTÃO
ESCREVA(V1[C1]);
FIM_SE
FIM_PARA
FIM_PARA
FIM
ebanton está offline   Responder com Quote
Antigo 27-10-2003, 15:10   #2 (permalink)
GBastos
Super Participante
 
Avatar de GBastos
 
Registrado em: Sep 2001
Localização: Salvador, Bahia
Idade: 32
Mensagens: 770
Reputação: 22 GBastos está indo no caminho certo
Padrão

Bem devem existir várias maneiras de fazer, pensei em duas:
1 - Como vc declarou um V3 ali q não é utilizado, vc poderia usar ele para guardar os numeros que se repetem, testando sempre para q nao haja dois iguais e no final imprimir o vetor..
2 - Vc teria q parar o loop assim q encontrasse a primeira ocorrencia de numeros iguais, já q so precisa imprimir uma vez.. Pra isso vc nao poderia usar um PARA, teria que usar um ENQUANTO ou REPITA, mais ou menos assim:
Código:
ALGORITMO TAREFA13 INÍCIO INTEIRO V1[10], V2[10], V3[10], C1, C2, C3; PARA C1 DE 0 ATÉ 9 FAÇA V1[C1] <-- LEIA_INTEIRO("ENTRE COM UM NÚMERO"); V2[C1] <-- LEIA_INTEIRO("ENTRE COM UM NÚMERO"); FIM_PARA PARA C1 DE 0 ATÉ 9 FAÇA C2 <= 0; ENQUANTO (C2 <= 9) E (V1[C1] != V2[C2]) FAÇA C2 <= C2 + 1; FIM_ENQUANTO SE (V1[C1]==V2[C2]) ENTÃO ESCREVA(V1[C1]); FIM_SE FIM_PARA FIM
Nesse caso, se o numero aparecer duas vezes em V2 não vai apresentar o problema, mas se aparecer 2 vezes em V1 ainda vai dar problema, mas ai vc melhora...

Abraços

P.S.: vc notou que na leitura dos numeros, o programa vai preencher os dois vetores alternadamente, não é? Ex:
1 vai para V1
2 vai para V2
3 vai para V1
4 vai para V2
E assim sucessivamente..
__________________
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better.
GBastos está offline   Responder com Quote
Antigo 27-10-2003, 16:04   #3 (permalink)
ebanton
Super Participante
 
Registrado em: May 2003
Localização: Lajeado - RS - 95900-000
Idade: 27
Mensagens: 637
Reputação: 19 ebanton está indo no caminho certo
Enviar mensagem via ICQ para ebanton Enviar mensagem via MSN para ebanton Enviar mensagem via Skype para ebanton
Padrão

Citação:
Postado Originalmente por GBastos
Bem devem existir várias maneiras de fazer, pensei em duas:
1 - Como vc declarou um V3 ali q não é utilizado, vc pod...
Valeu...´
Realmente dessa maneira funciona, menos quando apresentar dois números iguais em V1...você não saberia como terminar o algoritmo?

Tipo antes eu estava tentando fazer como você explicou no 1 mas não consegui mto bem....

Mas de qualquer forma valeu pela ajuda.
ebanton está offline   Responder com Quote
Antigo 27-10-2003, 16:19   #4 (permalink)
bytamer
Super Participante
 
Registrado em: Oct 2002
Localização: São Paulo/SP - 05304-010
Mensagens: 580
Reputação: 20 bytamer está indo no caminho certo
Enviar mensagem via MSN para bytamer
Padrão teste

algoritmo teste
var
v1,v2,v3: matriz[1..10] de inteiro
a,b: inteiro

inicio
para a de 1 ate 10 faca
leia v1[a],v2[a]
v3[a] <-- 19283
fim_para
para a de 1 ate 10 faca
para b de 1 ate 10 faca
se v1[a] = v2[b] entao
v3[a]<-- v1[a]
fim_se
fim_para
fim_para
para a de 1 ate 10 faca
se v3[a] <> 19283 entao
escreva v3[a]
fim_se
fim_para
fim.


pelo q entendi eh isso?
__________________
Afastado do fórum por um tempo.
bytamer está offline   Responder com Quote
Antigo 27-10-2003, 16:26   #5 (permalink)
ebanton
Super Participante
 
Registrado em: May 2003
Localização: Lajeado - RS - 95900-000
Idade: 27
Mensagens: 637
Reputação: 19 ebanton está indo no caminho certo
Enviar mensagem via ICQ para ebanton Enviar mensagem via MSN para ebanton Enviar mensagem via Skype para ebanton
Padrão Re: teste

Citação:
Postado Originalmente por bytamer
algoritmo teste
var
v1,v2,v3: matriz[1..10] de inteiro
a,b: inteiro

inicio
para a de 1 ate 10 faca
leia v1[a]...
eh +- isso...so nao entendi o pq disso que vc escreveu:
v3[a] <-- 19283
pq atribuiu esse numero ?


se v3[a] <> 19283 entao
e o que quer dizer o <> e para que serve no algoritmo?
ebanton está offline   Responder com Quote
Antigo 27-10-2003, 16:43   #6 (permalink)
bytamer
Super Participante
 
Registrado em: Oct 2002
Localização: São Paulo/SP - 05304-010
Mensagens: 580
Reputação: 20 bytamer está indo no caminho certo
Enviar mensagem via MSN para bytamer
Padrão arrf

algoritmo teste
var
v1,v2,v3,v4: matriz[1..10] de inteiro
cont,a,b: inteiro

inicio
cont <-- 1
para a de 1 ate 10 faca
leia v1[a],v2[a]
v4[a] <-- 19283
v3[a] <-- 19283
fim_para

para a de 1 ate 10 faca
para b de 1 ate 9 faca

se v1[a] = v1[b+1] entao
v3[cont] <-- v1[a]
v1[a] <-- 19283
cont<--cont + 1
fim_se


fim_para
fim_para

para a de 1 ate 10 faca
para b de 1 ate 9 faca

se v2[a] = v2[b+1] entao
v3[cont] <-- v2[a]
v2[a] <-- 19283
fim_se

fim_para
fim_para

para a de 1 ate 10 faca
para b de 1 ate 10 faca
se v1[a] = v2[b] entao
v4[a]<-- v1[a]
fim_se
fim_para
fim_para

para a de 1 ate 10 faca

se v3[a] <> 19283 entao
escreva v3[a]
fim_se

se v4[a] <> 19283 entao
escreva v4[a]
fim_se

fim_para
fim.


o <>(menor maior) significa diferente, atribui esse numero, como um controle, sendo q se o usuario digitar esse numero ele num vai aparecer, ta muito grande, mas foi o q consegui pensar nesses minutos thx, tente isso, tou sem tempo pra teste de mesa, faltou controlar ainda o v3 e v4, comprar se saum iguais e escrever, e achu q isso da fim a este problema
__________________
Afastado do fórum por um tempo.
bytamer está offline   Responder com Quote
Antigo 29-10-2003, 15:28   #7 (permalink)
GBastos
Super Participante
 
Avatar de GBastos
 
Registrado em: Sep 2001
Localização: Salvador, Bahia
Idade: 32
Mensagens: 770
Reputação: 22 GBastos está indo no caminho certo
Padrão

O bytamer tomou outro caminho interessante tb...
ebanton, não sei se ainda te serve (com o fórum saindo do ar, acabei não acompanhando alguns tópicos), mas acho q assim funcionaria:
Código:
ALGORITMO TAREFA13 INÍCIO INTEIRO V1[10], V2[10], C1, C2, C3; PARA C1 DE 0 ATÉ 9 FAÇA V1[C1] <-- LEIA_INTEIRO("ENTRE COM UM NÚMERO"); FIM_PARA PARA C1 DE 0 ATÉ 9 FAÇA V2[C1] <-- LEIA_INTEIRO("ENTRE COM UM NÚMERO"); FIM_PARA PARA C1 DE 0 ATÉ 9 FAÇA C2 <= 0; ENQUANTO (C2 <= 9) E (V1[C1] != V2[C2]) FAÇA C2 <= C2 + 1; FIM_ENQUANTO C3 <= 0; ENQUANTO (C3 <= C2) E (V1[C1] != V1[C3]) FAÇA C3 <= C3 + 1; FIM_ENQUANTO SE (V1[C1] == V2[C2]) E (C1 == C3) ENTÃO ESCREVA(V1[C1]); FIM_SE FIM_PARA FIM
P.S.: tirei o V3 pq não usei.
P.S. do P.S.: mudei tb a ordem de leitura, para que o usuario informe primeiro todo o vetor 1 depois o 2.
P.S. do P.S.: se não enteder alguma coisa, dê um toque
__________________
Ever tried. Ever failed. No matter. Try again. Fail again. Fail better.
GBastos está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 17:10.