Matemática — Cálculo Múltipla Escolha

Uma fábrica adquiriu máquinas de costura industrial para a produção de jogos de toalhas de mesa e guardanapos de tecido com estampas quadrículadas. Cada quadrículo tem tamanho padrão de 5 cm x 5 cm. Para a configuração da costura, é preciso um programa de computador para criar um molde que sejam informados as quantidades de quadrículos por comprimento e por largura, além do desenho da estampa a ser costurada. Considerando o cenário descrito, qual alternativa a seguir apresenta a implementação correta das funções criarmolde e alternarestampa?

Uma fábrica adquiriu máquinas de costura industrial para a produção de jogos de toalhas de mesa e guardanapos de tecido com estampas quadrículadas. Cada quadrículo tem tamanho padrão de 5 cm x 5 cm. Para a configuração da costura, é preciso um programa de computador para criar um molde que sejam informados as quantidades de quadrículos por comprimento e por largura, além do desenho da estampa a ser costurada. Considerando o cenário descrito, qual alternativa a seguir apresenta a implementação correta das funções criar_molde e alternar_estampa?

  1. char alternar_estampa (char estampa, char *proxima) { return *proxima; } void criar_molde (char molde[][58], int l, int c) { for (int i = 0; i < l; i++) { for (int j = 0; j < c; j++) { molde[i][j] = alternar_estampa(estampa, proxima); } } }
  2. char alternar_estampa (char estampa, char *proxima) { return estampa; } void criar_molde (char molde[][58], int l, int c) { for (int i = 0; i < l; i++) { for (int j = 0; j < c; j++) { molde[i][j] = alternar_estampa(estampa, *proxima); } } }
  3. char alternar_estampa (char estampa, char *proxima) { char proxima = *proxima; return (estampa == proxima) ? estampa : *proxima; } void criar_molde (char molde[][58], int l, int c) { for (int i = 0; i < l; i++) { for (int j = 0; j < c; j++) { char proxima = molde[i][j]; molde[i][j] = alternar_estampa(estampa, &proxima); } } }
  4. char alternar_estampa (char estampa, char *proxima) { return estampa; } void criar_molde (char molde[][58], int l, int c) { for (int i = 0; i < l; i++) { for (int j = 0; j < c; j++) { molde[10][j] = alternar_estampa(estampa, proxima); } } }

Resolução completa

Explicação passo a passo

A
Alternativa A

Esta questão aborda a lógica de programação em C, especificamente o uso de funções, loops aninhados e manipulação de matrizes para criar padrões visuais.

Análise do Problema

O objetivo é preencher uma matriz (molde) com um padrão de xadrez (alternando o caractere da estampa e espaços vazios).

Para resolver, precisamos verificar duas partes principais do código:

  1. Lógica de Alternância (alternar_estampa): A função deve decidir qual caractere imprimir baseado no último caractere impresso.
  2. Controle de Estado (criar_molde): O programa precisa lembrar qual foi o último caractere escrito para poder alternar na próxima posição.

Análise das Alternativas

Vamos examinar a lógica de cada opção:

  • Alternativa A:
  • A função alternar_estampa tem uma lógica falha (if (proxima != estampa) retorna estampa, mas depois retorna proxima).
  • No criar_molde, a variável proxima é inicializada, mas nunca é atualizada dentro do loop. Isso faria com que todas as posições recebessem o mesmo valor, quebrando o padrão.
  • Alternativa B:
  • A função tenta modificar proxima, mas como char é passado por valor, a mudança interna não afeta a variável externa.
  • Novamente, falta a atualização explícita de proxima após escrever na matriz.
  • Alternativa C:
  • alternar_estampa: return (proxima == estampa) ? ' ' : estampa;
  • Se o anterior (proxima) for igual à estampa, retorna espaço ' '.
  • Caso contrário, retorna a estampa.
  • Isso cria a alternância perfeita.
  • criar_molde:
  • Inicializa char proxima = ' '; (começa com espaço para iniciar com a estampa no [0][0]).
  • Percorre as linhas e colunas.
  • Escreve na matriz.
  • Crucial: Executa proxima = molde[i][j];. Isso garante que, na próxima iteração, a função saiba qual foi o valor da célula anterior.
  • Alternativa D:
  • Contém erros de sintaxe graves (atribuição de string a char sem aspas, acesso indevido a índice fixo [10]).

Conclusão

A Alternativa C é a correta porque implementa corretamente a lógica de transição de estados necessária para gerar um padrão alternado (xadrez). Ela mantém o valor da célula anterior na variável proxima e o atualiza a cada passo do loop.

Alternativa C

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Matemática — Cálculo

Ver mais Matemática — Cálculo resolvidas

Tem outra questão de Matemática — Cálculo?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.