Ir ao conteúdo
  • Cadastre-se

Portugol Programa para trocar as vogais das palavras por números - Portugol Studio.


Ir à solução Resolvido por devair1010,

Posts recomendados

 Faça um programa para criptografar o nome de uma pessoa. O programa deverá ler o nome e mostrar o novo nome criptografado. A cifração ou encriptação deverá ocorrer apenas sobre as vogais A, E, I, O, U e sobre o caractere espaço (em branco), quando houver. As vogais deverão ser substituídas respectivamente pelos algarismos 1, 2, 3, 4, 5 e o caractere espaço deverá ser trocado pelo caractere cerquilha (#).

Exemplo: A cifração do nome Maria Santos seria M1r31#S1nt5s

 

OBS: É vedado o uso de vetor/matriz ou algum outro tipo estruturado de dado. O Portugol Studio/Visualg possuem funções para manipulação de string (cadeia de caracteres). Utilize-as pararesolver as questões a seguir, caso necessário.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Jackson Vanutty   no visualG você pode usar o comando "copia" para verificar cada letra da frase digitada ,  e junto com o comando "compr" que obtém  a quantidade de caracteres da frase ,  e use esses comandos dentro de um loop "para / fimpara" , e depois que você fizer um código sobre esse exercício , poste ele aqui e ajudaremos se ainda precisar .

Link para o comentário
Compartilhar em outros sites

@devair1010

5 horas atrás, devair1010 disse:

@Jackson Vanutty   no visualG você pode usar o comando "copia" para verificar cada letra da frase digitada ,  e junto com o comando "compr" que obtém  a quantidade de caracteres da frase ,  e use esses comandos dentro de um loop "para / fimpara" , e depois que você fizer um código sobre esse exercício , poste ele aqui e ajudaremos se ainda precisar .

Só posso utilizar o Portugol nesse exercicio.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Jackson Vanutty    

Em 10/05/2023 às 23:35, Jackson Vanutty disse:

O Portugol Studio/Visualg possuem funções para manipulação de string

o prtugol studio e o visualG  usam o portugol , e se você quiser usar o IDE visualG então a função é "copia" e no portugol Studio é "tx.obter_caracter" , 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Jackson Vanutty, você está estudando VisualG ou Portugol Studio? Isso vai apenas influenciar na hora de implementar. Mas a lógica para resolver NÃO DEPENDE DE LINGUAGEM DE PROGRAMAÇÃO. Você precisa pensar em como resolveria isso, por exemplo, no papel.

 

Quais passos que poderiam ser feitos para transformar Maria Santos em M1r31#S1nt5s? Pense numa solução e descreva na sua resposta.

 

 

 

Para adiantar, caso já tenha algo em mente em como resolver, é só traduzir para a linguagem escolhida. Um exemplo de esboço para VisualG:

 

Algoritmo "Criptografia de nomes"
// Disciplina  :
// Professor   :
// Autor(a)    : Jackson Vanutty
// Data atual  : 14/05/2023

// Enunciado   :
//Faça um programa para criptografar o nome de uma pessoa. O programa deverá
//ler o nome e mostrar o novo nome criptografado. A cifração ou encriptação
//deverá ocorrer apenas sobre as vogais A, E, I, O, U e sobre o caractere
//espaço (em branco), quando houver. As vogais deverão ser substituídas
//respectivamente pelos algarismos 1, 2, 3, 4, 5 e o caractere espaço deverá
//ser trocado pelo caractere cerquilha (#).

//Exemplo: A cifração do nome Maria Santos seria M1r31#S1nt5s

//OBS: É vedado o uso de vetor/matriz ou algum outro tipo estruturado de dado.
//O Portugol Studio/Visualg possuem funções para manipulação de string (cadeia
//de caracteres). Utilize-as para resolver as questões a seguir, caso
//necessário.

var
nomeOriginal, nomeCriptogrado : caractere

inicio
escrevaL("Informa o nome a ser criptografado")
leia(nomeOriginal)


//Aqui você implenta um lógica que fará o solicitado no enunciado


//Abaixo um exemplo que simplesmente retorna o nome todo em maiúsculo
nomeCriptogrado <- Maiusc(nomeOriginal)

escrevaL("Nome original     : ", nomeOriginal)
escrevaL("Nome criptografado: ", nomeCriptogrado)

fimAlgoritmo

 

Ou seja: se o enunciado fosse "leia o nome de uma pessoa e retorne o nome todo em maiúsculo", o código acima basicamente já resolveria isso. Pois existe uma função que já faz isso. Para o teu código, você precisa analisar caractere a caractere (já dando o spoiler).

 

87,36% de uma solução já foi dada:

 

Em 11/05/2023 às 03:41, devair1010 disse:

@Jackson Vanutty,  no visualG você pode usar o comando "copia" para verificar cada letra da frase digitada, e junto com o comando "compr" que obtém a quantidade de caracteres da frase,  e use esses comandos dentro de um loop "para / fimpara" , e depois que você fizer um código sobre esse exercício, poste ele aqui e ajudaremos se ainda precisar.

 

Basicamente pesquise sobre o comando Copia() e Compr() no Visualg. Entendendo como eles funcionam, perceberá como ele pode ser útil para uma lógica que resolva esse problema (atenda ao enunciado).

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@devair1010 e @Simon Viegas, consegui desenvolver uma estrutura, mas não estou conseguindo rodar ainda! poderiam me dar um help? 

 

programa
{
     inclua biblioteca Texto --> tx
    funcao inicio()
    {

    cadeia novoNome, nome
    caractere letra
    inteiro i=1

    escreva ("Digite o nome a ser criptografado: ")
    leia (nome)

        faca{
            letra = Texto.obter_caracter(nome, i-1)
            se(letra == 'A'    ou letra == 'a')
                novoNome = novoNome + "1"
            senao se(letra == 'E'    ou letra == 'e')
                novoNome = novoNome + "2"
            senao se(letra == 'I'    ou letra == 'i')
                novoNome = novoNome + "3"
            senao se(letra == 'O'    ou letra == 'o')
                novoNome = novoNome + "4"
            senao se(letra == 'U'    ou letra == 'u')
                novoNome = novoNome + "5"
            senao se(letra == ' ')
                novoNome = novoNome + '#'
            senao 
                novoNome = novoNome + letra
                i = 1 + i
            }
        enquanto(i<= Texto.numero_caracteres(nome))
        escreva ("O nome criptografado: ", novoNome)
    }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@Jackson Vanutty    o tipo   é 

caractr letra
programa
{
    inclua biblioteca Texto --> tx
    funcao inicio()
    {

    cadeia   novoNome = "", nome = ""
    caractere letra  // ssem a letra "e" do final
    inteiro  i = 1

    escreva ("Digite o nome a ser criptografado: ")
    leia (nome)

        faca{
            letra = Texto.obter_caracter(nome, i-1)
            se(letra == 'A'    ou letra == 'a')
                novoNome = novoNome + "1"
            senao se(letra == 'E'    ou letra == 'e')
                novoNome = novoNome + "2"
            senao se(letra == 'I'    ou letra == 'i')
                novoNome = novoNome + "3"
            senao se(letra == 'O'    ou letra == 'o')
                novoNome = novoNome + "4"
            senao se(letra == 'U'    ou letra == 'u')
                novoNome = novoNome + "5"
            senao se(letra == ' ')
                novoNome = novoNome + '#'
            senao 
                novoNome = novoNome + letra
                i = 1 + i
            }
        enquanto(i<= Texto.numero_caracteres(nome))
        escreva ("O nome criptografado: ", novoNome)
    }
}

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
21 horas atrás, Jackson Vanutty disse:

@devair1010 e @Simon Viegas, consegui desenvolver uma estrutura, mas não estou conseguindo rodar ainda! poderiam me dar um help? 

 

A pergunta seria: não conseguindo porque? Qual erro está ocorrendo?

 

Se o erro foi lá no caractere (sem o "e"), o fato de ter uma "linha" abaixo das palavras já indica que tem erro... mas é só remover o "e" no final mesmo.

 

image.png

 

 

 

 

Apenas colei o código e teste:

image.png

 

Idem: a mensagem aí já diz o que precisa fazer. Sem mistério.

 

    cadeia novoNome = "", nome

 

 

 

 

Por fim... por que raios está inicializando i com 1?

 

Segue um código completo:

 

programa
{
	inclua biblioteca Texto --> tx
	
	funcao inicio()
	{

	cadeia nome, novoNome = ""
	caractere letra
	inteiro i = 0 
	
	escreva("Digite o nome a ser criptografado: ")
	leia(nome)
	
	faca {
		letra = Texto.obter_caracter(nome, i)
		
		se (letra == 'A' ou letra == 'a')
			novoNome = novoNome + "1"
		senao se (letra == 'E' ou letra == 'e')
			novoNome = novoNome + "2"
		senao se (letra == 'I' ou letra == 'i')
			novoNome = novoNome + "3"
		senao se (letra == 'O' ou letra == 'o')
			novoNome = novoNome + "4"
		senao se (letra == 'U' ou letra == 'u')
			novoNome = novoNome + "5"
		senao se (letra == ' ')
			novoNome = novoNome + '#'
		senao 
			novoNome = novoNome + letra
			
		i = 1 + i
	} enquanto (i < Texto.numero_caracteres(nome))
		escreva ("O nome criptografado: ", novoNome)
	}
}

 

Sugestões de melhorias:

  1. o que está sendo coletado no obter_caracter(nome, i) não é uma letra, mas sim um caractere, logo, o nome da variável não está semântica. Mude para outra, exemplo: caract ou algo que remeta a "caractere".
  2. como a laço de repetição tem um limite determinado, alteraria de faça/enquanto para para;
  3. em vez de uma cadeia de se/senao, utilizar escolha/caso.

 

Adendo: o corretor do Fórum está inserindo o "e" no final de caractere, mas no Portugol Studio não tem! 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!