Ir ao conteúdo
  • Cadastre-se

Portugol algoritmo em pseudocódigo pseudocódigo


Posts recomendados

Alguém me ajude neste código, pois não estou conseguindo fazer a soma das notas.

 

O módulo a ser implementado consiste em:

1 - Uma rotina de cadastro do valor de cada notinha de cada cliente, e neste cadastro deve conter além do valor de cada nota, o nome do cliente. Assuma que existe atualmente 20 clientes no caderninho. Assuma também que, cada cliente tem 10 notinhas.
2 - Uma rotina de impressão de todos os clientes com o seu valor total a pagar. E ao final mostrar um somatório total.
3 - Uma rotina que imprima na tela os valores e o somatório de um cliente em específico.
4 - Criar um menu simples com as 3 opções e uma opção para sair.

 

Algoritmo "Cadastro"

          tipo
              CadProduto = registro
                         nomeCliente: vetor [1..20] de caractere
                         valorNota: vetor [1..10] de real
                         valorTotal: real

fim_registro

procedimento mostrarMenu()

inicio
escreva (" 1 - cadastro registro ")
escreva (" 2 - Mostrar o somatório do Cliente ")
escreva (" 3 - Mostrar o valor a pagar do Cliente ")
escreva (" 4 - Mostrar o valor total dos Clientes ")

fim_procedimento

procedimento notasCadastrar ()

inicio
se (qtdNota < 10) entao
   escreva ("Digite o Nome do Cliente: ")
   leia (notas [qtdNota + 1].nomeCliente)
   escreva ("Digite o valor da Nota: ")
   leia (notas [qtdNota + 1].valorNota)
   escreva ("Digite o valor total a pagar: ")
   leia (notas [qtdNota + 1].valorTotal)
   escreva (" Notas Cadastrado com Sucesso! ")

senao
   escreva (" Limite máximo atigindo: 20 notas! ")

   fim_se

   opt <- 0

   fim_procedimento

   funcao notasBuscar (cod: inteiro) : inteiro

   var
   i, achou: inteiro

   inicio
   i <- 1
   achou <- 0

   enquanto (i <= qtdNota) faça
      se (notas .nomeCliente == cod) entao
         escreva (" nota: ", cod)
         escreva (" valor da nota: ", notas.valorNota)
         escreva (" valor total a pagar: ", notas.valorTotal)

         retorne i

         fim_se

         i <- i = 1

         fim_enquanto

         escreva (" nota não encontrada... ")

         retorne -1

         fim_funcao

         procedimento notasValorPagar ()

         var
         i, j, k: inteiro
         aux: CadProduto

         inicio
         para i de 1 ate qtdNota passo 1 faca
            para j de i + 1 ate qtdNota passo 1 faca
               k <- 1
               enquanto ((notas.valorNota[k] = notas[j].valorNota[k] e (k <= 50)) faça
                  k <- k + 1
                  fim_enquanto
                  se ((notas.valorNota[k] > notas[j].valorNota[k]) e (k <= 50)) entao
                     aux <- notas
                     notas <- notas
                     notas[j] <- aux
                     fim_se
                     fim_para
                     fim_para
                     fim_procedimento

                     procedimento notasMostrar ()

                     var
                     i: inteiro

                     inicio
                     para i de 1 ate qtdNotas passo 1 faca
                        escreva (" notas: ", notas.nomeCliente)
                        escreva (" valor da nota: ", notas.valorNota)
                        escreva (" valor total a pagar: ", notas.valorTotal)

                        fim_para
                        fim_procedimento

                        var
                        notas: vetor[1..10] de CadProduto
                        opt, qtdNotas, i: inteiro

                        inicio
                        qtdNotas <- 0

                        repita
                           mostrarMenu ()
                           leia (opt)
                        caso (opt)
                           seja 1 faca
                           para i de 1 ate 20 passo 1 faca
                              notasCadastrar ()
                              fim_para
                              seja 2 faca
                              notasBuscar ()
                              seja 3 faca
                              notasValorPagar ()
                              seja 4 faca
                              notasMostrar ()
                              fim_caso
                              ate_que (opt = 6)
fim
 

Link para o comentário
Compartilhar em outros sites

Algoritmo "Cadastro"

          tipo
              CadProduto = registro
                         nomeCliente: vetor [1..20] de caractere
                         valorNota: vetor [1..10] de real
                         valorTotal: real

fim_registro

procedimento mostrarMenu()

inicio
escreva (" 1 - cadastro registro ")
escreva (" 2 - Mostrar o somatório do Cliente ")
escreva (" 3 - Mostrar o valor a pagar do Cliente ")
escreva (" 4 - Mostrar o valor total dos Clientes ")

fim_procedimento

procedimento notasCadastrar ()

inicio
se (qtdNota < 10) entao
   escreva ("Digite o Nome do Cliente: ")
   leia (notas [qtdNota + 1].nomeCliente)
   escreva ("Digite o valor da Nota: ")
   leia (notas [qtdNota + 1].valorNota)
   escreva ("Digite o valor total a pagar: ")
   leia (notas [qtdNota + 1].valorTotal)
   escreva (" Notas Cadastrado com Sucesso! ")

senao
   escreva (" Limite máximo atigindo: 20 notas! ")

   fim_se

   opt <- 0

   fim_procedimento

   funcao notasBuscar (cod: inteiro) : inteiro

   var
   i, achou: inteiro

   inicio
   i <- 1
   achou <- 0

   enquanto (i <= qtdNota) faça
      se (notas .nomeCliente == cod) entao
         escreva (" nota: ", cod)
         escreva (" valor da nota: ", notas.valorNota)
         escreva (" valor total a pagar: ", notas.valorTotal)

         retorne i

         fim_se

         i <- i = 1

         fim_enquanto

         escreva (" nota não encontrada... ")

         retorne -1

         fim_funcao

         procedimento notasValorPagar ()

         var
         i, j, k: inteiro
         aux: CadProduto

         inicio
         para i de 1 ate qtdNota passo 1 faca
            para j de i + 1 ate qtdNota passo 1 faca
               k <- 1
               enquanto ((notas.valorNota[k] = notas[j].valorNota[k] e (k <= 50)) faça
                  k <- k + 1
                  fim_enquanto
                  se ((notas.valorNota[k] > notas[j].valorNota[k]) e (k <= 50)) entao
                     aux <- notas
                     notas <- notas
                     notas[j] <- aux
                     fim_se
                     fim_para
                     fim_para
                     fim_procedimento

                     procedimento notasMostrar ()

                     var
                     i: inteiro

                     inicio
                     para i de 1 ate qtdNotas passo 1 faca
                        escreva (" notas: ", notas.nomeCliente)
                        escreva (" valor da nota: ", notas.valorNota)
                        escreva (" valor total a pagar: ", notas.valorTotal)

                        fim_para
                        fim_procedimento

                        var
                        notas: vetor[1..10] de CadProduto
                        opt, qtdNotas, i: inteiro

                        inicio
                        qtdNotas <- 0

                        repita
                           mostrarMenu ()
                           leia (opt)
                        caso (opt)
                           seja 1 faca
                           para i de 1 ate 20 passo 1 faca
                              notasCadastrar ()
                              fim_para
                              seja 2 faca
                              notasBuscar ()
                              seja 3 faca
                              notasValorPagar ()
                              seja 4 faca
                              notasMostrar ()
                              fim_caso
                              ate_que (opt = 6)
fim

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Aline Bastos, primeiro pare para definir a estrutura de dados do programa.

 

Enunciado:

19 horas atrás, Aline Bastos disse:

O módulo a ser implementado consiste em:

1 - Uma rotina de cadastro do valor de cada notinha de cada cliente, e neste cadastro deve conter além do valor de cada nota, o nome do cliente. Assuma que existe atualmente 20 clientes no caderninho. Assuma também que, cada cliente tem 10 notinhas.
2 - Uma rotina de impressão de todos os clientes com o seu valor total a pagar. E ao final mostrar um somatório total.
3 - Uma rotina que imprima na tela os valores e o somatório de um cliente em específico.
4 - Criar um menu simples com as 3 opções e uma opção para sair.

 

São 20 clientes e, cada um deles, tem 10 notas... ou seja: são 200 registros de dados!!! Precisa ver como vai estruturar o programa.

 

Vamos lá:

Já adianto que o VisualG não aceita definição de vetores para items de um registro. (Pelo menos eu nunca vi)

Exemplo:

algoritmo "semnome"
tipo
   CadProduto = registro
      nomeCliente: vetor [1..20] de caractere
      valorNota: vetor [1..10] de real
      valorTotal: real
   fimRegistro
inicio

fimAlgoritmo

 

 

image.png

 

Daí teria que pensar eu outra forma. Poderia ser algo assim:

 

Teria um vetor para ter o nome dos clientes e outro para ter o valor de cada nota de cada cliente.

algoritmo "Cadastro"
var
   vetNomeCliente: vetor [1..20] de caractere
   vetCliente_Nota: vetor [1..20, 1..10] de real
inicio



fimAlgoritmo

No caso, a primeira coordenada do segundo vetor seria o código do cliente (a posição onde está o nome) e a segunda coordenada seria o código da cada uma de suas notas, ou seja: são 10 notas para cada um dos 20 clientes.

 

Exemplo de teste dessa estrutura:

image.png

 

 

 

RESUMINDO:

Reveja primeiro a questão da estrutura... não tente implementar o programa ainda.

 

No caso vai ser necessário utilizar registros? Se poste como você acha que poderia ficar.

 

No aguardo.

 

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!