Ir ao conteúdo
  • Cadastre-se

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


Ir à solução Resolvido por devair1010,

Posts recomendados

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

Link para o comentário
Compartilhar em outros sites

  • Solução

@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
Link para o comentário
Compartilhar em outros sites

@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

 

 

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

@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

 

Link para o comentário
Compartilhar em outros sites

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