• Matéria: Informática
  • Autor: ianfenix
  • Perguntado 6 anos atrás

Personagens Programar uma função filme que recebe três arrays com os nomes de personagens, filmes e ano de estréia no cinema. A função deve receber também um valor de id escolhido pelo usuário com intervalo de 1 até o tamanho máximo dos arrays fornecidos e retornar uma frase com o seguinte modelo: "personagem é um personagem do filme filme que estreou no cinema em lançamento." Se o valor de id for inválido, a função deve retornar a frase "Essa não é uma opção válida." Exemplo: personagens = ["Hermione", "Trinity", "Leia"] filmes = ["Harry Potter", "Matrix", "Star wars"] lancamentos = [2001, 1999, 1977] id = 3 Deve retornar a string: Leia é um personagem do filme Star wars que estreou no cinema em 1977.


oliveirapedroo: em que linguagem?
ianfenix: javascript
carlarfonseca: funcionou Ian?
saviorennan: já conseguiu?
joliveiradg: Eu resolvi!
rodolfoskfly: Alguem conseguiu resolver essa questão?

Respostas

respondido por: oliveirapedroo
5

Resposta:

function filme(personagens, filmes, lancamentos, id) {  

   if(id>filmes.length || id<1)

         return 'Essa não é uma opção válida.'

   --id

   return personagens[id]+' é um personagem do filme '+filmes[id]+' que estreou no cinema em '+lancamentos[id]

}

Explicação:


ianfenix: tem que ter um if para validar
ianfenix: se o id é válido ou não
oliveirapedroo: ok
diotattoo: coloca o if aí Ian... voce viu isso no curso e sabe como fazer. If Else.
rodolfoskfly: Alguem conseguiu resolver essa questão?
fglico: var personagens = ["Hermione", "Trinity", "Leia"]
var filmes = ["Harry Potter", "Matrix", "Star wars"]
var lancamentos = [2001, 1999, 1977]
var id = 3

function filme(personagens, filmes, lancamentos, id)
{
if ((id > filmes.length + 1) || (id < 1)){
var msg = ("Essa não é uma opção válida.")
return msg
}
else{
var msg = (personagens[id-1] + " é um personagem do filme " + filmes[id-1] + " que estreou no cinema em " + lancamentos[id-1] + ".")
return msg
}
}
katiacardosoh: Eu consegui com essa resposta, obrigada!!!!
LERELLES: Consegui! ufa!
respondido por: diotattoo
6

Resposta:

function filme(personagens, filmes, lancamentos, id) {

var tamanhoMaxArrays = Math.min(personagens.length, filmes.length, lancamentos.length) //verifica o tamanho das arrays e retorna o menor delas para nao ter valores vazios

    if(id < 1 || id > tamanhoMaxArrays){ // se a id for maior que ou menor que o tamanho maximo ele gera erro.

  var msgErro = "Essa não é uma opção válida."

   return msgErro

 }else{

  id--  // o valor é diminuido de 1,  já que a contagem nas arrays começa em 0

   return (personagens[id] + " é um personagem do filme " + filmes[id] + " que estreou no cinema em " + lancamentos[id])

 }  

}

console.log(filme(personagens, filmes, lancamentos, id))o:

Esse código executa exatamente  o que a atividade do Desafio Online - Programa bolsas Santander Mobile 2020 - T02 , do curso de introdução À programação da Digital House.

Porém o sistema deles retorna um erro que estou tentando descobrir.

Acredito que você tenha passado pelas etapas de aprendizado e consiga fazer os demais desafios. Volte no conteúdo caso tenha alguma dúvida e refaça as atividades para fixar melhor o conhecimento.


lopessdenise: Uma observação, em alguns casos pode dar erro devido a falta d ponto final na frase. Aí teria de ser assim:
return (personagens[id] + " é um personagem do filme " + filmes[id] + " que estreou no cinema em " + lancamentos[id]+".")
dyegofduarte: fiz meu código com varias opções diferentes, invertendo o teste do if e tudo mais, o console da plataforma deles retorna o valor certo no final e mesmo assim não valida como certo pois diz que tem erro "Um id inválido dever retorna uma mensagem de erro"...
dyegofduarte: também to frustrado com o debug da plataforma, pois fora dela roda certinho
danivaldoweb: faz dessa forma que dar certo, se ficar faltando uma virgula, ponto ou espaço a plataforma não dá como correta sua lógica.
danivaldoweb: var personagens = ["Hermione", "Trinity", "Leia"]
var filmes = ["Harry Potter", "Matrix", "Star wars"]
var lancamentos = [2001, 1999, 1977]
var id = 3
function filme(personagens, filmes, lancamentos, id){

if (id > personagens.length){

return ("Essa não é uma opção válida.");
}else{
--id // Aqui é efeito o decréscimo do id para retornar o item correto ao array

return (personagens[id] + " é um personagem do filme " + filmes[id] + " que estreou no cinema em " + lancamentos[id] + ".")
}
}
cybermeijin: Primeiramente quando retorna erro, a mensagem já diz na primeira linha que Hermione seria o id = 1. Ora, se um array inicia com id = 0, Hermione nunca poderia ser 1 e sim 0. E assim consecutivamente. Mesmo assim, eles consideram que há erro de lógica na solução do desafio. Esta opção de decrementar o id, para poder encaixar na resolução, satisfaz o exercício, mas acaba sendo uma gambiarra para validar o que não está teoricamente correto. Mas vamos em frente... Rsrsrs
bporfiriosilva: Um id inválido dever retorna "Essa não é uma opção válida."
Ao executar: filme(["Hermione", "Trinity", "Leia"],["Harry Potter", "Matrix", "Star wars"],[2001, 1999, 1977],1) deveria retornar "Hermione é um personagem do filme Harry Potter que estreou no cinema em 2001." Veja no terminal o retorno da sua função
bporfiriosilva: Ao executar: filme(["Hermione", "Trinity", "Leia"],["Harry Potter", "Matrix", "Star wars"],[2001, 1999, 1977],2) deveria retornar "Trinity é um personagem do filme Matrix que estreou no cinema em 1999." Veja no terminal o retorno da sua função
Ao executar: filme(["Hermione", "Trinity", "Leia"],["Harry Potter", "Matrix", "Star wars"],[2001, 1999, 1977],3) deveria retornar "Leia é um personagem do filme Star wars que estreou no cinema em 1977." Veja no terminal o retorno da sua função
bporfiriosilva: alguem conseguiu
carolinesilva115: CONSEGUI POR ESSE CÓDIGO AQUI:

var personagens = ["Hermione", "Trinity", "Leia"]
var filmes = ["Harry Potter", "Matrix", "Star wars"]
var lancamentos = [2001, 1999, 1977]
var id = 3

function filme(personagens, filmes, lancamentos, id){
if ((id > filmes.length + 1) || (id < 1)){
return ("Essa não é uma opção válida.")
}
else{
return (personagens[id-1] + " é um personagem do filme " + filmes[id-1] + " que estreou no cinema em " + lancamentos[id-1] + ".")
}
}
Perguntas similares