Alternativa A
A questão solicita a definição correta das interfaces (assinaturas) de duas funções em linguagem C, considerando restrições de memória e tipos de dados descritos no enunciado.
Para determinar a resposta correta, é necessário analisar a sintaxe de passagem de arrays e matrizes em C, bem como o mapeamento entre os tipos de dados lógicos (quantidade, valor monetário) e os tipos primitivos da linguagem.
Análise
1. Definição da Matriz de Vendas
O enunciado informa que as vendas estão em uma matriz onde cada linha representa um vendedor e as colunas representam as vendas. É especificado que a quantidade máxima de vendas é 30.
Em C, ao declarar uma matriz multidimensional que será passada para uma função, é obrigatório informar o tamanho da dimensão subsequente à primeira (no caso, o número de colunas).
- Correto:
float vendas[][30] - Incorreto:
float vendas[][] (Erro de compilação, pois o compilador não sabe calcular o offset de memória).
Isso elimina imediatamente as Alternativas C e E, pois utilizam float vendas[][].
2. Definição do Vetor de Nomes
Os nomes dos vendedores estão em um vetor de strings (vetor de vetores de caracteres), com tamanho máximo de 40 caracteres.
- Correto:
char nomes[][40] (Um array de strings, onde cada string tem 40 posições). - Incorreto:
char nomes[40] (Isso seria apenas um único array de 40 caracteres, capaz de armazenar apenas um nome, não uma lista de vendedores).
Isso elimina a Alternativa D, que declara char nomes[40] em vez de char nomes[][40].
3. Tipos de Retorno das Funções
Restam as Alternativas A e B. A diferença reside no tipo de retorno de cada função. Embora o nome do vendedor seja retornado via parâmetro de saída (char nomemaior[]), o tipo de retorno da função geralmente reflete a natureza do cálculo realizado internamente ou o status da operação.
- Função
MaiorQtdVendas: Envolve contagem de itens (número de vendas). O tipo lógico para contagem é inteiro (int). - Função
MaiorValorVendas: Envolve soma de valores monetários. O tipo lógico para valores monetários é ponto flutuante (float ou double).
Comparando as opções:
- Alternativa A:
int para Qtd (correto) / float para Valor (correto). - Alternativa B:
float para Qtd (estranho) / int para Valor (estranho).
Resumo da Comparação
| Característica | Enunciado | Alternativa A | Alternativa B | Alternativa C/D/E |
|---|
| Matriz Vendas | Max 30 colunas | vendas[][30] ✅ | vendas[][30] ✅ | vendas[][] ❌ |
| Vetor Nomes | Max 40 chars | nomes[][40] ✅ | nomes[][40] ✅ | nomes[40] ❌ |
| Retorno Qtd | Contagem | int ✅ | float ❌ | - |
| Retorno Valor | Monetário | float ✅ | int ❌ | - |
Conclusão
A Alternativa A é a única que apresenta a sintaxe correta para matrizes e vetores de strings em C (vendas[][30] e nomes[][40]) e associa os tipos de retorno lógicos adequados às operações de contagem (int) e valores monetários (float).