Logo Passei Direto
Buscar
Na Aula 5 trabalhamos com o conceito de estrutura de dados homogêneas, as chamadas structs. Imagine que você faz parte de um grupo de amigos que é muito fã de histórias em quadrinhos e você e seu grupo resolvem fazer um programa que cataloga os seus super-heróis favoritos. Seu amigo então desenvolve um código em C/C++ conforme a imagem abaixo:
Ao analisar o código de seu amigo você percebe rapidamente que existe um erro em seu código. Assinale a alternativa que contém a explicação do que está errado no programa de seu amigo.
Este não é o erro, pois não se deve mesmo inicializar variáveis dentro da criação de uma struct. Inicialização acontece depois disso.
Este não é o erro, pois uma string de caracteres de fato deve ser declarada como tipo char.
Este não é o erro. O gets pode ser usado normalmente com structs.
Este não é o erro. Você pode usar o \n normalmente sozinho no printf.
O erro está aqui, pois o correto deste índice deveria ser, por exemplo: gets_s(SuperHerois[i].NomeDoHeroi); Perceba que o posição do [i] deve ser após o nome da struct, e não após o nome do campo.
A O erro do código está na criação da struct, pois o seu amigo não inicializou as variáveis dentro da struct chamada CatalogoSuperHerois.
B O erro do código está na declaração da variável NomeDoHeroi, pois uma variável que armazena 50 caracteres deveria ser do tipo string, e não do tipo char.
C O erro do código está no uso da função gets, pois esta função não deve ser utilizada com structs.
D O erro do código está no printf("\n"), pois não é permitido na função printf colocar \n sem nenhum texto adicional.
E O erro do código está na posição do índice [i] dos campos das structs dentro do gets e do scanf.
User badge image
Ensinando Através de Questões

ontem

Respostas

User badge image

Ed Verified user icon

ontem

Analisando as alternativas e o contexto do uso de structs em C/C++: - Inicializar variáveis dentro da definição da struct não é permitido; a inicialização deve ser feita depois da declaração da variável do tipo struct. Então, alternativa A está incorreta porque diz que o erro está na criação da struct por não inicializar variáveis dentro dela, mas isso não é erro, é prática correta. - Em C, strings são arrays de char, então declarar NomeDoHeroi como char[50] está correto. Alternativa B está errada. - A função gets é insegura e desaconselhada, mas pode ser usada com campos de structs. Alternativa C está incorreta ao dizer que o erro está no uso do gets com structs. - O printf("\n") é válido para imprimir uma nova linha. Alternativa D está errada. - O erro comum é na posição do índice [i] ao acessar campos da struct. O correto é usar SuperHerois[i].NomeDoHeroi, e não SuperHerois.NomeDoHeroi[i]. Portanto, alternativa E está correta. Resposta correta: E) O erro do código está na posição do índice [i] dos campos das structs dentro do gets e do scanf.

Essa resposta te ajudou?

0
Dislike0

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Essa pergunta também está no material:

Mais perguntas desse material