Ir ao conteúdo

Posts recomendados

Postado

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
 

Postado
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

 

  • Membro VIP
Postado

@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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!