Ir ao conteúdo

VisualG Visualg - Leitura de funcionários e geração de dados estatísticos


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

A partir dos dados feitos com vetores, precisa fazer um filtro no VisualG com: Funcionário com maior idade e menor idade, Quantidade de funcionários do sexo masculino, Quantidade ,de funcionários do sexo feminino e o Total de salários da empresa.

Como posso fazer ?

Vou deixar o progresso 

 

Algoritmo "Leitura de funcionários e geração de dados estatísticos"

Var
   linha, coluna: inteiro
   funcionario : vetor[0..4, 0..4] de caractere
   nome, oficio, idade, sexo, salario, dadosdofuncionario : caractere
   i, j, contf, contm, totalsalario : inteiro
   menoridade, maioridade, nomemaior, nomenor: caractere

Inicio

   //preenchimento
   escreval("Informe dados do funcionario na seguinte ordem: ")
   escreval("Nome")
   escreval("Oficio")
   escreval("Idade")
   escreval("Sexo")
   escreval("Salario")
   escreval("-------------------")

   para i de 0 ate 4 faca
      escreval("Dados do funcionario","",i+1)
      para j de 0 ate 4 faca
         leia(funcionario[i,j])
      fimpara
   fimpara

   //mostrar a matriz
   escreval("Leitura da matriz e apresentação dos dados")
   escreval("Nome, Oficio, Idade, Sexo, Salario")
   para linha de 0 ate 4 faca
      escreval("-")
      para coluna de 0 ate 4 faca
         escreva(funcionario[linha, coluna]," | ")
      fimpara
   fimpara

 

 

 

Screenshot_1.png

Postado

Olá. Copie o código e cole usando o botão <> do editor. Colar imagem não ajuda quem for te ajudar.

 

Não foram declaradas nenhuma das variaveis e contadores, revise isso.

 

 

Postado
17 minutos atrás, Ricardov disse:

Olá. Copie o código e cole usando o botão <> do editor. Colar imagem não ajuda quem for te ajudar.

 

Não foram declaradas nenhuma das variaveis e contadores, revise isso.

 

 

Corrigido, muito obrigado

 

  • Solução
Postado

@joshuayuuki    no enunciado não tem nada sobre o Oficio do funcionário ,  e não precisa colocar dois loop para  , já que vai usar matriz , basta um Loop ,   pegue os dados dos funcionários e coloque na matriz , sendo o nome na primeira dimensão da matriz , e na 2  a idade , na 3 o sexo , e na 4 o sal. do funcionário , e depois faça os cálculos , pesquisando o que está na matriz , e como vai precisar somar , então precisa converter de caracteres para inteiro , e para isso use a função caracpnum ,   e seu código corrigido poderia ser assim :

Algoritmo "Leitura de funcionários e geração de dados estatísticos"
Var
  funcionario   : vetor[0..4, 0..4] de caractere
  idade, sexo, salario               : caractere
  menoridade,nome,dadosdofuncionario : caractere
  i, j, contf, contm, linha, coluna  : inteiro
  totalsalario                       : real  // para números com ponto decimal
  maioridade, nomemaior, nomenor     : caractere
Inicio
  //preenchimento
  escreval("Informe dados do funcionario na seguinte ordem: ")
  escreval("Nome")
  escreval("Idade")
  escreval("Sexo")
  escreval("Salario")
  escreval("-------------------")

  para i de 0 ate 1 faca
    escreval("Dados do funcionario ",i+1)
    escreva("Nome ")
    leia(funcionario[i,0])//nome do funcionario
    escreva("idade ")
    leia(funcionario[i,1])//idade do funcionario
    escreva("Sexo M / F ")
    leia(funcionario[i,2])//sexo do funcionario
    escreva("Valçor Salário ")
    leia(funcionario[i,3])//salaro do funcionario
  fimpara
  
  //  aqui pesquisar na Matriz e fazer os cálculos
  para i de 0 ate 1 faca
    se funcionario[i,2] = "m" entao
      contm := contm + 1
    fimse
    totalsalario := totalsalario + caracpnum(funcionario[i,3])
      
    //  aqui outros ( se ) iguais a esse para as outras opções
    
  fimpara
  //  mostrar a matriz
  escreval("Leitura da matriz e apresentação dos dados")
  escreval("Nome, Idade, Sexo, Salario")
  para linha de 0 ate 1 faca
    escreva("-> ")
    para coluna de 0 ate 3 faca
      escreva(funcionario[linha, coluna]," | ")
    fimpara
    escrevaL
  fimpara
  
  escrevaL("O Total De Homens é : ",       contm:3)  // para escver em coluna
  escrevaL("O Salario TotaL   é : ",totalsalario:3)
fimalgoritmo

 

  • Curtir 1
Postado

@devair1010

Otimo!

porém ainda estou em duvida referente as outras perguntas feitas no exercicio, como posso tirar as informações da matriz e fazer o print delas?como por exemplo de idade maior e menor.?

 

 

16 horas atrás, devair1010 disse:

@joshuayuuki    no enunciado não tem nada sobre o Oficio do funcionário ,  e não precisa colocar dois loop para  , já que vai usar matriz , basta um Loop ,   pegue os dados dos funcionários e coloque na matriz , sendo o nome na primeira dimensão da matriz , e na 2  a idade , na 3 o sexo , e na 4 o sal. do funcionário , e depois faça os cálculos , pesquisando o que está na matriz , e como vai precisar somar , então precisa converter de caracteres para inteiro , e para isso use a função caracpnum ,   e seu código corrigido poderia ser assim :



Algoritmo "Leitura de funcionários e geração de dados estatísticos"
Var
  funcionario   : vetor[0..4, 0..4] de caractere
  idade, sexo, salario               : caractere
  menoridade,nome,dadosdofuncionario : caractere
  i, j, contf, contm, linha, coluna  : inteiro
  totalsalario                       : real  // para números com ponto decimal
  maioridade, nomemaior, nomenor     : caractere
Inicio
  //preenchimento
  escreval("Informe dados do funcionario na seguinte ordem: ")
  escreval("Nome")
  escreval("Idade")
  escreval("Sexo")
  escreval("Salario")
  escreval("-------------------")

  para i de 0 ate 1 faca
    escreval("Dados do funcionario ",i+1)
    escreva("Nome ")
    leia(funcionario[i,0])//nome do funcionario
    escreva("idade ")
    leia(funcionario[i,1])//idade do funcionario
    escreva("Sexo M / F ")
    leia(funcionario[i,2])//sexo do funcionario
    escreva("Valçor Salário ")
    leia(funcionario[i,3])//salaro do funcionario
  fimpara
  
  //  aqui pesquisar na Matriz e fazer os cálculos
  para i de 0 ate 1 faca
    se funcionario[i,2] = "m" entao
      contm := contm + 1
    fimse
    totalsalario := totalsalario + caracpnum(funcionario[i,3])
      
    //  aqui outros ( se ) iguais a esse para as outras opções
    
  fimpara
  //  mostrar a matriz
  escreval("Leitura da matriz e apresentação dos dados")
  escreval("Nome, Idade, Sexo, Salario")
  para linha de 0 ate 1 faca
    escreva("-> ")
    para coluna de 0 ate 3 faca
      escreva(funcionario[linha, coluna]," | ")
    fimpara
    escrevaL
  fimpara
  
  escrevaL("O Total De Homens é : ",       contm:3)  // para escver em coluna
  escrevaL("O Salario TotaL   é : ",totalsalario:3)
fimalgoritmo

 

 

Postado

@joshuayuuki    pesquisando na matriz ali dentro do segundo para use o comando se  para  comparar a idade de cada funcionário , que está na dimensão 1 da matriz , e vai atualizando a variável menoridade , sempre que ela for maior que a que está na matriz , e depois o mesmo com a variáveL maioridade .... 

Postado

@joshuayuuki    você vai precisar de mais uma variáveL auxiliar , do tipo inteiro ou real , lá no início , onde todas são inicializadas com o valor zero , e assim dentro do Loop para compare a variável auxiliar com o que está na matriz na dimensão 1 , onde está armazenada a idade do funcionário ,  a matriz seria assim :

 

matriz_2.jpg.21b6586a7b3656fa8534ca62654c5382.jpg

e poderia ser assim  :

para i de 0 ate 1 faca
  se funcionario[i,2] = "m" entao // se m é homem , se f é mulher 
    contm := contm + 1            // incrementa a qtd de homens
  fimse
  se caracpnum(funcionario[i,1]) > aux entao  // dimensão 1 é a idade do funconario
    maioridade := funcionario[i,0]            // nome do funcionario de maior idade
                                              // na dimensão 0 da matriz
    aux := caracpnum(funcionario[i,1])        // atualiza a idade
  fimse
  totalsalario := totalsalario + caracpnum(funcionario[i,3]) // somatorio de todos os salarios
                                                             // acumulando na varuáveL totalsalario
  //  aqui outros ( se ) iguais a esse para as outras opções
fimpara

 

  • Curtir 1
Postado

@devair1010

Estou tentando rodar, porém sem sucesso

 

 

Algoritmo "semnome"
var
   // Seção de Declarações das variáveis
   funcionario   : vetor[0..4, 0..4] de caractere
   idade, sexo, salario, oficio          : caractere
   menoridade,nome,dadosdofuncionario : caractere
   i, j, contf, contm, linha, coluna, aux  : inteiro
   totalsalario    : real  // para números com ponto decimal
   maioridade    : caractere
Inicio
   //preenchimento
   escreval("Informe dados do funcionario na seguinte ordem: ")
   escreval("Nome")
   escreval("Idade")
   escreval("Sexo")
   escreval("Salario")
   escreval("Oficio")
   escreval("-------------------")

   para i de 0 ate 4 faca
      escreval("Dados do funcionario ",i+1)
      escreva("Nome ")
      leia(funcionario[i,0])//nome do funcionario
      escreva("Idade ")
      leia(funcionario[i,1])//idade do funcionario
      escreva("Sexo M / F ")
      leia(funcionario[i,2])//sexo do funcionario
      escreva("Valor Salário ")
      leia(funcionario[i,3])//salaro do funcionario
      escreva("Oficio ")
      leia(funcionario[i,4])//oficio do funcionario
      escreval("-------------------")
   fimpara

   //  aqui pesquisar na Matriz e fazer os cálculos
   para i de 0 ate 1 faca
      se funcionario[i,2] = "M" entao
         contm := contm + 1
      fimse
      se caracpnum(funcionario[i,1]) > aux entao  // dimensão 1 é a idade do funconario
         maioridade := funcionario[i,0]            // nome do funcionario de maior idade
         // na dimensão 0 da matriz
         aux := caracpnum(funcionario[i,1])        // atualiza a idade
      fimse
      totalsalario := totalsalario + caracpnum(funcionario[i,3])
      //  aqui outros ( se ) iguais a esse para as outras opções
   fimpara

   //  mostrar a matriz
   escreval("Leitura da matriz e apresentação dos dados")
   escreval("Nome, Idade, Sexo, Salario, Oficio")

   para linha de 0 ate 4 faca
      escreval("-")
      para coluna de 0 ate 4 faca
         escreva(funcionario[linha, coluna]," | ")

      fimpara
   fimpara

   //apresentação dos dados
   escreval(" ")
   escreval("-------------------")
   escrevaL("O Total De Homens é : ",       contm:3)  // para escver em coluna
   escrevaL("O Total De Mulheres é : ",       contf:3)
   escrevaL("O maior nome : ",       maioridade:3)
   escrevaL("O menor nome é : ",       menoridade:3)
   escrevaL("O Salario TotaL   é : ",totalsalario:3)

fimalgoritmo

 

Postado

@joshuayuuki    se você inseriu 5 funcionário no primeiro para , então na hora de comparar precisa pesquisar todos na matriz , e ali você está pesquisando apenas os dois primeiros , então seu código corrigido poderia ser assim  :

Algoritmo "matriz_3"
var
   // Seção de Declarações das variáveis
   funcionario   : vetor[0..4, 0..4] de caractere
   idade, sexo, salario, oficio       : caractere
   menoridade,nome,dadosdofuncionario : caractere
   i, j, contf, contm, linha, coluna  : inteiro
   totalsalario , aux                 : real         // para números com ponto decimal
   maioridade                         : caractere
Inicio
   //preenchimento
   escreval("Informe dados do funcionario na seguinte ordem: ")
   escreval("Nome")
   escreval("Idade")
   escreval("Sexo")
   escreval("Salario")
   escreval("Oficio")
   escreval("-------------------")

   para i de 0 ate 4 faca                   // vai cadastrar 5 funcionarios
      escreval("Dados do ",i+1,"º"," funcionario ")
      escreva("Nome ")
      leia(funcionario[i,0])                // nome do funcionario
      escreva("Idade ")
      leia(funcionario[i,1])                // idade do funcionario
      escreva("Sexo M / F ")
      leia(funcionario[i,2])                // sexo do funcionario
      escreva("Valor Salário ")
      leia(funcionario[i,3])                // salario do funcionario
      escreva("Oficio ")
      leia(funcionario[i,4])                // oficio do funcionario
      escreval("-------------------")
   fimpara
   //  aqui pesquisar na Matriz e fazer os cálculos
     
   para i de 0 ate 4 faca                   // então pesquize todos os cinco
      se funcionario[i,2] = "M" entao       // se m é homem , se f é mulher
         contm := contm + 1                 // incrementa a qtd de homens
      fimse

      // outro se igual a esse para ter o total de mulheres
      
      se caracpnum(funcionario[i,1]) > aux entao   // dimensão 1 é a idade do funconario
         maioridade := funcionario[i,0]            // nome do funcionario de maior idade
                                                   // na dimensão 0 da matriz
         aux := caracpnum(funcionario[i,1])        // atualiza a idade
      fimse
         
      //  aqui outros ( se ) iguais a esse para as outras opções
           
      totalsalario := totalsalario + caracpnum(funcionario[i,3])
   fimpara
                                                         // mostrar a matriz
   escreval("Leitura da matriz e apresentação dos dados")
   escreval("Nome, Idade, Sexo, Salario, Oficio")
   para linha de 0 ate 4 faca
      escreval("-")
      para coluna de 0 ate 4 faca
         escreva(funcionario[linha, coluna]," | ")
      fimpara
   fimpara
                                                         // apresentação dos dados
   escreval                                              // (" ") para que esses parenteses ?
   escreval("------------------------ "               )
   escrevaL("O Total De Homens é ---: ",       contm:3)  // para escrever em coluna
   escrevaL("O Total De Mulheres é -: ",       contf:3)
   escrevaL("O maior nome ----------: ",    maioridade)
   escrevaL("O menor nome é --------: ",    menoridade)
   escrevaL("O Salario TotaL   é ---: ",totalsalario:3)  // esse :3 só serve para inteiro e reaL
   escrevaL                                              // pular huma Linha para Baixo   
   escrevaL                                              // pular huma Linha para Baixo
fimalgoritmo

 

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