Ir ao conteúdo
  • Cadastre-se

Portugol onde esta o erro?


Posts recomendados

2 - Crie um algoritmo que ajude o DETRAN a saber, o total de recursos que foram arrecadados com a aplicação de multas de trânsito. O algoritmo deve ler as seguintes informações para cada motorista: -O número da carteira de motorista (de 1 a 4327) -Número de multas; -Valor da cada uma das multas. Deve ser impresso o valor da dívida de cada motorista e ao final da leitura o total de recursos arrecadados (somatório de todas as multas). O algoritmo deverá imprimir também o número da carteira do motorista que obteve o maior número de multas.

 

programa
{
	
	funcao inicio()
	{	

		inteiro variaveis[7]

		faca {
			
		escreva ("\nDigite o numero da carteira de motorista: ")
		leia (variaveis[4])
		
		escreva ("Digite o numero de multas: ")
		leia (variaveis[1])
		
		escreva ("Digite o valor da multa: ")
		leia (variaveis[2])

		variaveis[5] = variaveis[1]
		variaveis[6] = variaveis[4]
		
		se (variaveis[5] > variaveis[4]){
			escreva ("O maior numero de multas é para a carteira: ", variaveis[5])
		se (variaveis[6] > variaveis[1])
			escreva ("O maior numero de multas é: ", variaveis[6])

	

		}enquanto (variaveis[0] > 0)

		 
}

 

Este codigo me da erro no ultimo colchetes, aq em baixo, onde esta o erro?

 

edit: acho que ali seria variaveis[5] > variaveis[1] e variaveis[6] > variaveis[4], no se depois da declaração.

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

@luquinhas44    seu vetor não foi inicializado ,  assim  na posição zero tem valor desconhecido , lixo de memória , e você armazenou  o número da carteira de motorista na posição  4  que não precisa ser comparada ,  e sim o número de multas , e Que está na posição  1 ,  e se for maior armazena esse valor e o numero da carteira em uma dessas posições , para no final escrever las .

Link para o comentário
Compartilhar em outros sites

Não irei corrigir o seu algoritmo, mas, sim apontar o erro.

programa
{
	
	funcao inicio()
	{
		inteiro variaveis[7]
		faca {
		    escreva ("\nDigite o numero da carteira de motorista: ")
		    leia (variaveis[4])
	
		    escreva ("Digite o numero de multas: ")
		    leia (variaveis[1])

		    escreva ("Digite o valor da multa: ")
		    leia (variaveis[2])

		    variaveis[5] = variaveis[1]
		    variaveis[6] = variaveis[4]

		    se (variaveis[5] > variaveis[4]){
		    	escreva ("O maior numero de multas é para a carteira: ", variaveis[5])
		        se (variaveis[6] > variaveis[1])
			        escreva ("O maior numero de multas é: ", variaveis[6])
            }
        /* Falta a chave para fechar o bloco faca{..}enquanto() "}" */
        enquanto (variaveis[0] > 0)
    /* Falta a chave "}" para fechar o bloco da função */
}

 

Recomendo uma estratégia melhor para fazer o algoritmo.

programa {
    inclua biblioteca Matematica 
    // Quantidade maxima de carteiras de motorista
    const inteiro MAX_CARTEIRAS = 4327
    
    funcao inicio() {
        // Salva o numero da carteira de motorista 
        inteiro numero_carteira[MAX_CARTEIRAS]
        // Valor de debitos por carteira
        real multas_carteira[MAX_CARTEIRAS]
        // Quantindade de multas e carteiras pegas
        inteiro q_cadastrados = 0
        
        caractere opcao
        
        faca {
            // Numero atual pego da carteira de motorista
            inteiro numero_atual = 0
            // Quantidade de multas a serem pegas
            inteiro q_numero_multas
            // Multa atual
            real multa_atual = 0.0
            // Soma de multas de cada motorista
            real soma_multas = 0.0
            // Pega o numero da carteira de motorista
            // -O número da carteira de motorista (de 1 a 4327)
            faca {
                escreva("Digite o numero da carteira:")
                leia(numero_atual)
                limpa()
                se (numero_atual < 1 ou numero_atual > MAX_CARTEIRAS) {
                    escreva("O numero da carteira não pode ser menor que 1 ou maior que ", MAX_CARTEIRAS,"\n")
                }
            } enquanto (numero_atual < 1 ou numero_atual > MAX_CARTEIRAS)
            // Salva o numero da carteira
            numero_carteira[q_cadastrados] = numero_atual
            
            escreva("Digite o numero de multas a serem pegas:")
            leia(q_numero_multas)
            limpa()
            
            // Pega todas as multas
            para (inteiro contador = 0; contador < q_numero_multas; contador++) {
                escreva("Digite o valor da multa [", contador+1, "]:")
                leia(multa_atual)
                limpa()
                soma_multas = soma_multas+multa_atual
            }
            // Salva a soma das multas da carteira atual
            multas_carteira[q_cadastrados] = soma_multas
            
            // Incrementa a quantidade de carteiras pegas
            q_cadastrados = q_cadastrados+1
            
            // Pergunta se quer cadastra outra carteira
            escreva("Deseja cadastrar outra carteira?\n")
            escreva("S/N:")
            leia(opcao)
        } enquanto (opcao == 'S' ou opcao == 's')
        
        // Mostra a soma de todas as multas de cada carteira
        para (inteiro contador = 0; contador < q_cadastrados; contador++) {
            escreva("Divida da carteira ", numero_carteira[contador], " e ", Matematica.arredondar(multas_carteira[contador], 2), "\n")
        }
    }
}

É apenas um esboço do algoritmo!

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

Citação
funcao inicio() {
        // Salva o numero da carteira de motorista 
        inteiro numero_carteira[MAX_CARTEIRAS]

 

 

porque a variavel foi declarada assim? com [MAX_CARTEIRAS] depois, e também isso aqui: 

 

} enquanto (numero_atual < 1 ou numero_atual > MAX_CARTEIRAS)
            // Salva o numero da carteira
            numero_carteira[q_cadastrados] = numero_atual

 

porque o laço de repetição esta sendo feito com numeros fora da seleção? (não estão entre 1 e 4327 (e tambem porque essa variavel esta sendo declarada assim: "numero_carteira[q_cadastrados] = numero_atual"

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

@luquinhas44 Eu acho que você não está usando a versão do portugol studio de pc, é sim a versão online.

eu recomendo você baixar a versão para o seu sistema operacional e ver a ajuda do programa que é bem mais completa do que a versão online.

9 horas atrás, luquinhas44 disse:

porque a variavel foi declarada assim? com [MAX_CARTEIRAS]

Eu declarei um vetor com a constante MAX_CARTEIRAS, quando o interpretador passar pela constante MAX_CARTEIRAS ele vai substituir pelo numero 4327.

Veja a parte sobre vetores e constantes da ajuda do portugol ide.

9 horas atrás, luquinhas44 disse:

e também isso aqui: 

 

} enquanto (numero_atual < 1 ou numero_atual > MAX_CARTEIRAS)
            // Salva o numero da carteira
            numero_carteira[q_cadastrados] = numero_atual

 

porque o laço de repetição esta sendo feito com numeros fora da seleção? (não estão entre 1 e 4327

Veja bem, se eu fizesse assim

	enquanto (não(numero_atual >= 1 e numero_atual <= MAX_CARTEIRAS))

seria bem mais difícil de entender do que

	enquanto (numero_atual < 1 ou numero_atual > MAX_CARTEIRAS)

É uma regra básica da proposição na simplificação de expressões lógicas para satisfazer uma condição lógica,

porque o comando enquanto precisa que a expressão seja verdadeira para repetir os comandos.

9 horas atrás, luquinhas44 disse:

(e tambem porque essa variavel esta sendo declarada assim: "numero_carteira[q_cadastrados] = numero_atual"

Leia a documentação do portugol studio, lá tem todas as respostas.

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