Procedure not being performed in Portugol Studio

Asked

Viewed 22 times

0

I created a code to receive the: names, age, sex and salary of 10 people, a function to sort the vectors according to the highest salary, and another function to return the names of the 5 best paid women.

But when I finish filling the code with the information, it does not return anything and also does not end, it is as if it were waiting for some information.

Any idea what the mistake is?

programa
{ 
    funcao inicio()
    {
        inteiro salario[10], idade[10], tamanho, z = 0, x = 0
        cadeia nome[10], sexo[10]
        para(inteiro a = 0 ; a < 10 ; a++){
            escreva("Insira o nome do funcionário: ")
            leia(nome[a])
            escreva("Insira o salário arrendondado do funcionário: ")
            leia(salario[a])
            enquanto(salario[a] < 0){
                escreva("Não é possivel ter um salario negativo, insira novamente: ")
                leia(salario[a])
            }
            escreva("Insira a idade do funcionário: ")
            leia(idade[a])
            enquanto(idade[a] < 12 ou idade[a] > 99){
                 escreva("Insira uma idade válida (maior que 12 e menor que 99): ")
                 leia(idade[a])
            }
            escreva("Insira o sexo do funcionário: (Masculino 'M' | Feminino 'F'): ")
            leia(sexo[a])
            enquanto(sexo[a] != "M" e sexo[a] != "F"){
                escreva("Insira 'M' para Masculino | 'F' para Feminino: ")
                leia(sexo[a])
            }       
                limpa()
        }   
        ordenarsalarios(salario, idade, nome, sexo)
        
    }

     funcao ordenarsalarios(inteiro salario[],inteiro idade[], cadeia nome[],cadeia sexo[]){
        inteiro aux, aux1
          cadeia aux2, aux3

              para(inteiro a = 0 ; a < 10 ; a++){
                para(inteiro b = 0 ; b < 10 ; b++){
                    se(salario[a] > salario[b]){
                    aux = salario[a]
                    salario[a] = salario[b]
                    salario[b] = aux

                    aux1 = idade[a]
                    idade[a] = idade[b]
                    idade[b] = aux1

                    aux2 = nome[a]
                    nome[a] = nome[b]
                    nome[b] = aux2
                    
                    aux3 =  sexo[a]
                    sexo[a] = sexo[b]
                    sexo[b] = aux3
                    }
                }
              }
          b(salario, idade, nome, sexo)
     }

        funcao b(inteiro salario[],inteiro idade[], cadeia nome[],cadeia sexo[]){
              
              cadeia nomescrever[5]
              inteiro controle = 0, k = 0
              para(inteiro a = 0 ; a < 10 ; a++){
                se(sexo[a] == "F"){
                    controle++
                    enquanto(controle < 5){
                        nomescrever[controle-1] = nome[a]
                    }
                }   
              }
              escreva("=======\n")
              escreva("Os nomes das 5 mulheres melhores remuneradas são: \n")
              para(inteiro esc = 0 ; esc < 5 ; esc++){
                escreva(esc+1,"º - ",nomescrever[esc],"\n")
              }
    }
}
  • You would have to put the global variables outside the function for when you leave the function the data is saved and then have the contents on the screen.

  • The activity asks not to use global variables, as I would to pass the data without using them?

  • Blz edits the question and puts that information there because it’s hard to guess :D

  • Creates the function to order the highest salary, and the function to return the names of the 5 women. In the main process you will take all the data and then call the functions for easy, you already put an array to save the ordering and one to save the women but well paid. When printing you print the corresponding array.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.