Ir ao conteúdo
  • Cadastre-se

VisualG Problemas com a logica


Posts recomendados

Boa tarde pessoal,

 

Estou tentando fazer um algoritmo so que ele está dando um erro que informa que o até não tem o repita atrelado.

 

Algoritmo "semnome"
// Uma empresa de vendas tem três corretores. A empresa paga ao corretor uma
//comissão calculada de acordo com o valor de suas vendas. Se o valor da venda
// de um
//corretor for maior que R$ 50.000.00 a comissão será de 12% do valor vendido. Se o
//valor da venda do corretor estiver entre R$ 30.000.00 e R$ 50.000.00 (incluindo
//extremos) a comissão será de 9.5%. Em qualquer outro caso, a comissão será de 7%.
//Escreva um algoritmo que gere um relatório contendo nome, valor da venda e
//comissão de cada um dos corretores. O relatório deve mostrar também o total de
//vendas da empresa.
Var
   sair : caracter
   total : real
   i, j : inteiro
   nome: vetor[1..100] de caracter
   vvenda: vetor[1..100] de real
   comissao: vetor[1..100] de real

Inicio


   escreval("########################################")
   escreval("###                                  ###")
   escreval("###   Cadastro de Venda Corretores   ###")
   escreval("###                                  ###")
   escreval("########################################")
   escreval("")

   sair <- "s"
   repita

      para i de 1 ate 100 faca
         para j de 1 ate 100 faca
            escreva("Digite o nome do vendedor: ")
            leia(nome[i])
            escreva("Digite o valor da venda: ")
            leia(vvenda[j])


            escreval("Deseja cadastrar outro corretor? Digite s para SIM e n para NÃO")
         ate sair <> "n"

      fimpara

   fimpara




   se ( vvenda[j] > 50000 ) então
      comissao[j] <- vvenda[j] * 0.12
   senao
      se ( vvenda[j] >= 30000 ) e ( vvenda[j] <= 50000 ) então
         comissao[j] <- vvenda[j] * 0.095
      senao
         comissao[j] <- vvenda[j] * 0.07
      fimse
   fimse

   total <- vvenda[j] + total

fimenquanto

para i de 1 ate 100 faca
   para j de 1 ate 100 faca
      escreval("O vendedor: ", nome[i], " vendeu R$ ", vvenda[j], " sua comissao foi de R$ ", comissao[j])
   fimpara
fimpara

escreval("A empresa vendeu um total de R$ ", total)

Fimalgoritmo

O que estou fazendo de errado ?

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

@Fabio Aragao    você colocou o ate dentro do para ,   e ali não precisa desses dois loop para fazer os cadastros , o que você precisa é colocar uma variável como contador para informar a posição do vetor onde será inserido o nome e o valor nos respectivos vetores e também na hora de imprimir você usa o contador como limite para o loop de impressão ,   então seu código ficaria assim :

Algoritmo "comando repita"
// Uma empresa de vendas tem três corretores. A empresa paga ao corretor uma
//comissão calculada de acordo com o valor de suas vendas. Se o valor da venda
// de um
//corretor for maior que R$ 50.000.00 a comissão será de 12% do valor vendido. Se o
//valor da venda do corretor estiver entre R$ 30.000.00 e R$ 50.000.00 (incluindo
//extremos) a comissão será de 9.5%. Em qualquer outro caso, a comissão será de 7%.
//Escreva um algoritmo que gere um relatório contendo nome, valor da venda e
//comissão de cada um dos corretores. O relatório deve mostrar também o total de
//vendas da empresa.
Var
   sair          : caracter
   total         : real
   i, j,contador : inteiro
   nome          : vetor[1..100] de caracter
   vvenda        : vetor[1..100] de real
   comissao      : vetor[1..100] de real

Inicio

   escreval("########################################")
   escreval("###                                  ###")
   escreval("###   Cadastro de Venda Corretores   ###")
   escreval("###                                  ###")
   escreval("########################################")
   escreval("")

   sair <- "s"
   repita
     contador := contador + 1
     escreva("Digite o nome do vendedor: ")
     leia(nome[contador])
     escreva("Digite o valor da venda: ")
     leia(vvenda[contador])

     escreval("Deseja cadastrar outro corretor? S/N ")
     leia(sair)
   ate sair <> "s"

   para j de 1 ate contador faca
     se ( vvenda[j] > 50000 ) ENTÃO
       comissao[j] <- vvenda[j] * 0.12
     senao
       se ( vvenda[j] >= 30000 ) e ( vvenda[j] <= 50000 ) ENTÃO
         comissao[j] <- vvenda[j] * 0.095
       senao
         comissao[j] <- vvenda[j] * 0.07
       fimse
     fimse
     total <- vvenda[j] + total
   fimpara

   para j de 1 ate contador faca
      escreva("O vendedor: ",nome[j]," vendeu R$ ",vvenda[j])
      escreval(" sua comissao foi de R$ ",comissao[j])
   fimpara
   escreval("A empresa vendeu um total de R$ ", total)
Fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Alguns pontos:

21 horas atrás, Fabio Aragao disse:

   sair <- "s"
   repita

- Não precisa inicializar a variável sair, pois está utilizando repita ("faz, depois pergunta"). Isso seria necessário se utilizado enquanto. Por sinal, conceitualmente o que deve ser inicializado é o contador, pois ela é utilizado como incrementação, ou seja, que utiliza o seu próprio valor para atualizar. obs.: O Visualg inicializa automaticamente, mas é bom para ir se acostumando para futuras outras linguagem quem não fazem isso.

- a nomenclatura "sair" não está batendo com o seu uso. Quando tem "s" ele repete?? poderia por exemplo usar "continuar".

- no código do @devair1010 a variável i não está sendo utilizada. De qualquer sorte, como "padrão" ("costume") é utilizado o i como primeira opção de auxiliar do para, ou seja, remove o j e troca pelo i.

- @Fabio Aragao, em relação ao seu código, observe que você está utilizando um vetor para cada dado, daí, a correlação entre eles está na posição... logo, teria que ser a mesma variável para elas... logo, sendo uma estrutura de repetição só. Como a quantidade de cadastros não é fixa, daí que surgiu a necessidade do contador citado por @devair1010.

 

 

Obs.: @devair1010, por favor, evite não entregue o código com as correções sugeridas, deixe que o próprio usuário o faça, pois desta forma estimula o usuário a interpretar as orientações, assim como absorverá melhor o que foi aplicado.

 

 

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