Utilize a função calculaTensao(float corrente, float resistencia) criada na questão anterior para um conjunto de 20 resistores em um circuito elétrico, cujas resistências e correntes são digitadas por um usuário, para escrever um programa em C que calcule as tensões nestes 20 resistores. Utilize vetores.
Passo 1
O que o enunciado pede e quais são os dados fornecidos:
- Escrever um programa em C que calcule as tensões em
resistores. - As resistências e as correntes para cada resistor serão digitadas pelo usuário.
- Deve-se utilizar vetores (arrays) para armazenar os valores.
- Deve-se utilizar a função já criada anteriormente:
.
O pedido final é: implementar um programa que leia
valores de corrente e
valores de resistência, use a função
para obter cada tensão e mostre as tensões calculadas.
Passo 2
Conceito físico e fórmula que vamos usar (a “mágica” por trás da função):
- A lei de Ohm relaciona tensão, corrente e resistência por
onde:
-
é a tensão (volts), -
é a corrente (amperes), -
é a resistência (ohms).
Explicação do que a função faz:
- A função
recebe dois parâmetros do tipo : a corrente e a resistência, e retorna a tensão calculada como . - Protótipo da função (representado em notação C dentro de fórmula para seguir as regras de notação matemática do enunciado):
- No programa, vamos chamar essa função para cada par
e guardar o resultado em um vetor de tensões.
Passo 3
Estrutura do programa (passo a passo lógico — como organizar o código):
- Definir uma constante
para o número de resistores. - Declarar três vetores (arrays) do tipo
: -
para armazenar as correntes , -
para armazenar as resistências , -
para armazenar as tensões .
-
- Ler do usuário, em um laço de
de até : - Primeiro a corrente
(ou ler pares corrente/resistência — tanto faz, desde que a leitura seja consistente). - Em seguida a resistência
. - Verificar o retorno de
para ter certeza de que a leitura foi bem-sucedida.
- Primeiro a corrente
- Para cada
, chamar . - Exibir as tensões com uma formatação adequada (por exemplo, três casas decimais).
- Tratar casos especiais (opcional): resistência negativa é fisicamente estranha — pode apenas aceitar o valor e calcular, ou emitir um aviso; aqui vamos apenas calcular e, se desejar, imprimir um aviso para resistências negativas.
Observações práticas:
- Em C os vetores indexam de
a . - Usar
para economia de memória e porque a função já usa . - Usar
com o especificador (por exemplo ) para imprimir floats com três casas decimais.
Passo 4
Detalhes de implementação (explicando o que cada parte do código faz, sem mostrar o código final completo aqui):
- Incluir o cabeçalho padrão:
-
- Declarar/definir a função
. Se a função já existir em outro arquivo objeto, basta declarar o protótipo; para tornar o programa autocontido, definir a função como: - No
: - Declarar
- Declarar os vetores:
- Fazer um laço
para ler os valores: usar e , checando se retornou . - Depois de ler um par, calcular
. - Ao final, outro laço para imprimir todas as tensões com
.
- Declarar
Boas práticas e pequenos cuidados:
- Checar o valor de retorno de
ajuda a detectar entradas inválidas. - Usar mensagens claras ao pedir entrada, por exemplo: “Digite a corrente (A) para o resistor 1:”.
- Usar
antes de em alguns ambientes interativos pode ser útil, mas não é necessário na maioria dos casos. - Compilar com
ajuda a detectar avisos.
Passo 5
Explicação rápida de exemplo numérico para entender o que o programa fará:
- Se o usuário digitar para um resistor
(isto é, A) e (isto é, ), então a função retorna
- O programa repetirá esse cálculo para os
resistores e mostrará os resultados.
Resposta
#include <stdio.h>
float calculaTensao(float corrente, float resistencia) {
return corrente * resistencia;
}
return corrente * resistencia;
}
int main(void) {
const int N = 20;
float correntes[N];
float resistencias[N];
float tensoes[N];
const int N = 20;
float correntes[N];
float resistencias[N];
float tensoes[N];
printf("Calculo de tensoes em %d resistores usando V = I * R\n", N);
for (int i = 0; i < N; ++i) {
printf("Resistor %d:\n", i + 1);
printf(" Digite a corrente (A): ");
if (scanf("%f", &correntes[i]) != 1) {
fprintf(stderr, "Erro na leitura da corrente. Encerrando.\n");
return 1;
}
printf(" Digite a resistencia (Ohm): ");
if (scanf("%f", &resistencias[i]) != 1) {
fprintf(stderr, "Erro na leitura da resistencia. Encerrando.\n");
return 1;
}
tensoes[i] = calculaTensao(correntes[i], resistencias[i]);
}
printf("\nTensoes calculadas:\n");
for (int i = 0; i < N; ++i) {
printf("Resistor %2d: tensao = %.3f V (I = %.3f A, R = %.3f Ohm)\n",
i + 1, tensoes[i], correntes[i], resistencias[i]);
}
return 0;
}