Ir ao conteúdo
  • Cadastre-se

Algoritmo Visualg dúvida


Posts recomendados

Olá pessoal,

tenho este exercício para resolver no visualg usando estrutura de repetição, mas nao consigo fazer pois não sei como faço para informar se o número lido contem o dígito 2 e/ou 7, acredito que alguem aqui possa me ajudar

Obrigada.

leia um número entre 100 e 999 (validar para aceitar apenas valores nesse intervalo) e informar se o número lido contém os dígitos 2 e/ou 7.

Link para o comentário
Compartilhar em outros sites

Olá moça. Perceba que pra facilitar, seu professor disse que os numeros terão sempre 3 digitos.

Vou explicar com exemplos (o código fica por sua conta):

Imagine que o indivíduo entre com o número 349.

voce pode obter o primeiro digito (a centena) fazendo uma divisão inteira por 100, nesse caso seu resultado seria 3. Primeiro digito obtido, agora é só comparar se ele é 2 ou 7.

voce dividiu o número por 3 e obteve 100 né? Imagina que voce faz o inverso agora 3*100 = 300 (óbvio que voce não obteve o mesmo número original).

"E daí seu retardado? No que isso vai me ajudar?" - voce pode estar pensando.

E eu explico: Se voce pegar o número original (349) e subtrair esse resultado (300), voce vai ter 49. Que voce pode dividir por 10 para obter a dezena (4). Aí voce pode novamente subtrair o 49 do 4*10, e tem o ultimo digito. Ficou fácil agora?

Seu professor facilitou muito pedindo pra voce verificar somente valores que vão de 100 a 999, pois eles sempre tem o mesmo número de digitos. Eu fiz aqui no forum um código pra um usuário no tópico http://forum.clubedohardware.com.br/problema-vetores-dev/930825?t=930825 , que o indivíduo poderia digitar qualquer valor de 0 a 999999999, e aí a coisa fica um pouco mais complicada, porque se o cara entra com um 347 da vida, eu vou dividir primeiro por 100, depois por 10, já se ele entra com um valor como 63985 eu divido por 10000, depois por 1000, depois por 100, depois por 10.

"E eu com isso?! Quero só saber do meu código e pronto ***** ¬¬" - voce imagina.

voce não tem nada a ver com isso, mas pode ser que futuramente ele solicite que voce faça... ;)

Se tiver ainda alguma dúvida, só perguntar.

Link para o comentário
Compartilhar em outros sites

Ghost Killer, obrigada, fiquei muito feliz com sua resposta, ajudou bastante, e o seu tópico http://forum.clubedohardware.com.br/...30825?t=930825 também me ajudou bastante, salvei aqui pra mim caso ele passe mais algum desse tipo e também para pesquisa, estou tentando fazer o exercício, assim que conseguir eu mando ele pra você dar uma olhada, obrigada até

Link para o comentário
Compartilhar em outros sites

nossa, é bem complicado esse exercício, nao consegui, da uma olhada no que eu consegui fazer, mas nao ta dando certo nao aparece 4 no dig 2 aparece 4.9 e se eu coloco \ pra aparecer só o numero 4 aparece 10, nao to mais entendendo nada, você pode me ajudar de novo?

obrigada pela ajuda

ai vai o que eu fiz:

var

nro,i:inteiro

dig1,dig2,dig3,dig21:real

inicio

// Seção de Comandos

dig1<-0

dig2<-0

dig3<-0

para i de 1 ate 1 faca

escreval("escreva um numero>100<999: ")

leia (nro)

fimpara

dig1<- nro\100

se(dig1=2)ou(dig1=7)então

escreval (" O PRIMEIRO digito contem o numero 2 ou 7")

senao

escreval (" O PRIMEIRO dígito NÃO é 2 nem 7")

fimse

dig2<- (nro-dig1*100)\10

se (dig2=2)ou(dig2=7)então

escreval (" O SEGUNDO digito é 2 ou 7")

fimse

escreval (" O SEGUNDO dígito NÃO é 2 nem 7")

dig21<-dig2*10

dig3<- (nro-dig1*100)-dig21

se (dig3=2)ou (dig3=7)então

(" O TERCEIRO dígito contem o numero 2 ou 7")

senao

escreval (" O TERCEIRO dígito NÃO é 2 nem 7")

fimse

fimalgoritmo

Link para o comentário
Compartilhar em outros sites

Olá Mariana, vi sua PM e por enquanto ando frequentando aqui e lendo a maioria dos tópicos (ia ver esse) até o momento que eu ficar de saco cheio uahhaua, é difícil eu frequentar um forum por muito tempo, não dou mais 3 semanas pra eu sumir daqui.

Bom, vamos lá:

Existem 2 tipos de divisões, a divisão inteira e a divisão real. A divisão inteira, te dá uma resposta inteira e deixa um resto. Já a divisão real te dá uma resposta quebrada, sem resto. voce precisa de uma divisão inteira, e está tendo uma divisão real. O problema é que o mesmo operador ( " / " )faz os dois tipos de divisão. A solução é que para ter uma resposta que é inteiro, todas as variáveis devem ser declaradas como inteiro, e não como real. Ou seja, no seu caso, nro, dig1, dig2, dig3 e dig21 tem que ser todos inteiros.

Tente mudar esses tipos de dados e volte para me dar a resposta. Uma pergunta, a divisão no VisualG é com a barra assim mesmo? ( "\" ), não é pro outro lado não, tipo assim: " / "? Nunca vi desse jeito em nenhuma linguagem, mas como nunca usei VisualG...

Ainda assim pode haver alguns problemas, que se ocorrerem faço uma ideia de como resolver (pois também tive naquele código que te mostrei e lá está resolvido), mas de antemão é melhor não esquentar a cabeça com isso agora (pois não sei se o VisualG tem uma função para truncar valores por exemplo). Se não tiver a função, e o problema que falei ocorrer, a gente vai ter que criar uma equivalente, e vai ser meio chatinho...

Vamos dar um passo de cada vez pra não tropeçar.

A propósito, voce alguma vez já definiu/criou alguma função? Sabe como faz?

Link para o comentário
Compartilhar em outros sites

  • 10 meses depois...

Possivelmente o que você queria seria assim:

var

nro,i:inteiro

dig1,dig2,dig3,dig21:real

inicio

dig1<-0

dig2<-0

dig3<-0

para i de 1 ate 1 faca

escreval("escreva um numero>100<999: ")

leia (nro)

fimpara

dig1<- nro/100

se(dig1=2)ou(dig1=7)então

escreval (" O PRIMEIRO digito contem o numero 2 ou 7")

senao

escreval (" O PRIMEIRO dígito NÃO é 2 nem 7")

fimse

dig2<- (nro-dig1*100)/10

se (dig2=2)ou(dig2=7)então

escreval (" O SEGUNDO digito é 2 ou 7")

fimse

escreval (" O SEGUNDO dígito NÃO é 2 nem 7")

dig21<-dig2*10

dig3<- (nro-dig1*100)-dig21

se (dig3=2)ou (dig3=7)então

(" O TERCEIRO dígito contem o numero 2 ou 7")

senao

escreval (" O TERCEIRO dígito NÃO é 2 nem 7")

fimse

fimalgoritmo

^_^

espero ter ajudado

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...