Ir para conteúdo
Jehlemos

Dúvida com erro - comparações contra strings

Recommended Posts

Olá,
Boa Tarde!

Estou em uma plataforma de estudos no qual se executa exercícios e testes, o enunciado é:

 

Escreva a função pode SeAposentar que recebe por parâmetro a idade, o sexo e os anos de contribuição previdenciária que uma pessoa tem, exemplo: podeSeAposentar(62, "F", 34) true.

A idade mínima para se aposentar para mulheres é 60 anos, enquanto que para homens é 65. Em ambos os casos, deve ter pelo menos 30 anos de contribuição.

 

function podeSeAposentar (idade, sexo, anosTrabalhados) {
    if(anosTrabalhados >= 40) {
        if(sexo == "F") {
            if(idade >= 60) {
                return true;
            }
        }
        else if(sexo == "M") {
            if(idade>= 65){
                return true;
            }
        }
    }
    return false;
}


>

Sua solução funcionou, mas aponta o seguinte erro:

Objetivos que não foram atendidos: podeSeAposentar faz comparações contra strings.

 

**O que está errado? Alguém pode me ajudar?** 

Obrigada!

Editado por Jehlemos
consegui que o código funcione mas não por completo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom existe uma inconsistência no seu código:

 

// no enunciado e dito que o tempo mínimo de contribuição é 30 você colocou 40 então os testes vão falhar

anosTrabalhados >= 40

 

// código com alteração

function podeSeAposentar (idade, sexo, anosTrabalhados) {
    if(anosTrabalhados >= 30) {
        if(sexo == "F") {
            if(idade >= 60) {
                return true;
            }
        }
        else if(sexo == "M") {
            if(idade >= 65){
                return true;
            }
        }
    }
    return false;
}

console.log(podeSeAposentar(62, "F", 34));

 

jsbin: https://jsbin.com/wokejimani/edit?html,js,console,output

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por asacap1000
      Olá galera estou quebrando a cabeça aqui e não sei mais o que fazer. Estamos migrando nossa intranet que estava desatualizada demais e estamos colocando toda ela em php7.3.
      Dentro desse sistema temos varias consultas que são realizadas no Oracle. As consultas estão ocorrendo 100% mas ao chegar na plataforma de relatórios travou tudo. Não consegui acertar o meio de consultar por período, já utilizei "to_date, to_char, trunc" e nada. Interessante que no PLSQL o to_date funciona certo
      SELECT DISTINCT TO_DATE(IO.TIME_ARRIVAL)
        FROM IN_OUT IO
       WHERE TO_DATE(IO.TIME_ARRIVAL) BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    04/11/2021
      2    18/11/2021
      3    17/11/2021
      4    14/11/2021
      5    22/11/2021
      6    08/11/2021
      7    11/11/2021
      8    13/11/2021
      9    09/11/2021
      10    10/11/2021
      11    05/11/2021
      12    19/11/2021
      13    15/11/2021
      14    03/11/2021
      15    06/11/2021
      16    23/11/2021
      17    01/11/2021
      18    02/11/2021
      19    16/11/2021
      20    20/11/2021
      21    12/11/2021
      22    21/11/2021
       
      Se eu utilizar ele ignora a data que estabeleci para a consulta
       TO_CHAR(IO.TIME_ARRIVAL,'DD/MM/YYYY') BETWEEN '01/11/2021' AND '23/11/2021'
       
      1    03/07/2013
      2    05/07/2013
      3    18/06/2013
      4    21/05/2013
      5    20/05/2013
      6    12/08/2013
      7    21/08/2013
      8    23/08/2013
      9    02/09/2013
      10    12/09/2013
       
      Isso no PLSQL, no caso do PHP o to_date não funciona nem gera o relatório, e no to_char funciona mas ignorando as datas apontadas.
       
      O que dá pra  fazer pra resolver isso, tenho que finalizar essa migração até final de Dezembro e estou começando a ficar preocupado com o tempo
       
      Agradeço qualquer ajuda que vier
    • Por mateus.andriollo
      Boa tarde,
      Tenho alguns campos numéricos q ao fazer uma select gostaria q retornasse uma legenda
       
      exemplo:
      Status: 0=Inativo / 1=Ativo Condição: 1=Funcionando / 2=Em manutenção / 3=Manutenção Interna   
      Seria algo assim, tenho varias tabelas com estes campos... mas tenho q ficar usando replace.
      Existe uma forma de criar uma função para isso? Nem q na função eu tenha que setar nome do campo, ficando assim:
      Legenda('Status',cadastro.status) 
    • Por leticiiaa
      Estou tentando fazer a seguinte inserção de dados no Banco utilizando uma procedure e o erro é:
      #1064 - Você tem um erro de sintaxe no seu SQL próximo a 'VALUES ('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF',' na linha 1
      use db_studiotopfit; call create_user(type_user,nome, sobrenome, sexo, data_nascimento,endereco, uf, cidade, bairro, cpf, rg, email, username, senha, cargo, salario)VALUES ('Funcionário', 'Luciana', 'Soares', '1', '1900-01-1', 'casa tal', 'DF', 'Brasília', 'jnidas', '89076543', '94984984', 'teste@hotmail.com', 'Letícia de', '123', 'dibsadh', '1000') Esta é a definição da minha procedure:
      -- ----------------------------------------------------- -- Procedure `db_studiotopfit`.`create_user` -- ----------------------------------------------------- DELIMITER $$ CREATE PROCEDURE create_user( IN type_user VARCHAR(25), IN cpf BIGINT(11), IN nome VARCHAR(15), IN sobrenome VARCHAR(45), IN sexo TINYINT(1), IN data_nascimento DATE, IN endereco VARCHAR(80), IN uf VARCHAR(2), IN cidade VARCHAR(15), IN bairro VARCHAR(25), IN rg VARCHAR(20), IN email VARCHAR(100), IN username VARCHAR(15), IN password VARCHAR(45), IN cargo VARCHAR(30), IN salario DECIMAL(7, 2)) BEGIN DECLARE user_type INT(4) DEFAULT 0; DECLARE id_matricula INT(4) DEFAULT 0; DECLARE errno INT; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET CURRENT DIAGNOSTICS CONDITION 1 @P1 = MYSQL_ERRNO, @P2 = MESSAGE_TEXT; SELECT @P1 AS 'Código', @P2 AS 'Mensagem'; ROLLBACK; END; START TRANSACTION; SELECT idperfil INTO user_type FROM `perfil` WHERE perfil=type_user ORDER BY idperfil DESC LIMIT 1; INSERT INTO `tb_pessoa` (cpf, nome, sobrenome, sexo, data_nascimento, endereco, uf, cidade, bairro, rg, email) VALUES (cpf, nome, sobrenome, sexo, data_nascimento, endereco, uf, cidade, bairro, rg, email); INSERT INTO `usuario` (id_pessoa_cpf, perfil_idperfil, senha, usuario) VALUES (cpf, user_type, MD5(password), username); CASE type_user WHEN 'Aluno' THEN INSERT INTO `tb_aluno` (id_pessoa_cpf) VALUES (cpf); WHEN 'Funcionário' THEN BEGIN INSERT INTO `tb_funcionario` (id_pessoa_cpf, cargo, salario) VALUES (cpf, cargo, salario); SELECT LAST_INSERT_ID() INTO id_matricula; CASE cargo WHEN 'Professor' THEN INSERT INTO tb_professor (tb_funcionario_id_matricula) VALUES (id_matricula); ELSE BEGIN END; END CASE; END; ELSE BEGIN END; END CASE; COMMIT; END $$ DELIMITER ;  
    • Por Lonn
      Hi
      I need help creating some .exe or .bat that would completely delete some specific files from my computer.
      An app that scans and deletes all files and traces by name + format
      example:
      delete.cfg
      As the specific directory would vary from computer to computer, I would like help to create one that excludes only using the file name and format
      Hope to get answers, thanks!
    • Por Luiz Henrique
      Olá pessoas,
       
      Tenho uma classe e dentro dela várias chamadas para métodos de acordo com a necessidade em outra classe (para obter dados DB), como são muitas e vou duplicar os arquivos, para ganhar tempo queria colocar o nome da classe em uma variável porém não funciona.
       
      use Class1; class Class2 { public $className = 'Class1'; ... $dados = $this->className::function(); // não funciona } Era para gerar isso:
      $dados = Class1::function();
      Se eu der um echo $this->$className, ele me retorno o nome da Class1 porém para executar um método dentro da Class1 não vai, diz que a classe Class1 não existe!
      Tem alguma forma de funcionar isso?
       
      Obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.