RESPOSTAS DOS EXERCÍCIOS – LISTA 2
[1]
Eu desejo declarar duas variáveis do tipo char, duas do tipo int e uma do tipo float,assinale as opções em que as declarações foram realizadas corretamente (X) . char a; int b,c; float d; char e; ( ) char a b; int c d; float e; (X) char a, b; int c, d; float e; (X) char a = 0; int b, c; float d; char e = 'F'; ( ) char a, b, int c, d;
float d; (X) charint b = 'V', c; a;
float d = 3; char e; (X) char a; int b; char c; float d; int e; (X) char a = 5, e = 280; int b = 8, c = 23; float d = 90;
[2]
Sabendo que a variável var é do tipo char, porque executar o comando var = 1232; não atribui o valor 1232 a variável var?[3]
Nos programas abaixo, qual será a saída mostrada na tela ao se executar o programa? Não é necessário incluir a parte onde o system(“PAUSE”) solicita que se pressione qualquer tecla para continuar...(a) #include <stdio.h> #include <stdlib.h> void funcao(char a) { a = a*a; printf("%d\n",a); } int main(void) { char aux = 5; funcao(aux); system("PAUSE"); return 0; }
A função imprime o resultado da operação a*a. (b) #include <stdio.h> #include <stdlib.h> int funcao(char a) { a = a*a; return a; } int main(void) { char aux = 5; aux = funcao(aux); printf("%d\n",aux); system("PAUSE"); return 0; }
A função retorna o resultado de a*a e a função principal (main) imprime o resultado.
(c) #include <stdio.h> #include <stdlib.h> int funcao(char a) { printf("Calculando..."); a = a*a; return a; } int main(void) { char aux = 5; aux = funcao(aux); system("PAUSE"); return 0; }
Não há um printf onde se imprima números... apenas a string “calculando...” é impressa.
(d) #include <stdio.h> #include <stdlib.h> void funcao(char a) { a = a*a; } int main(void) { char aux = 5; funcao(aux); printf("%d\n", aux); system("PAUSE"); return 0; }
Lembre-se que a função não altera uma variável externa à função!!
[4]
Escreva uma função que calcula e retorna o volume de uma esfera em m3. A função deverá receber como parâmetro3 4 3 esfera V = πr o raio da esfera em m. float calc_vol(float r) { float vol; vol = (4.0/3.0)*M_PI*r*r*r;
/* Tenho que usar 4.0 e 3.0 para informar que são constantes em ponto flutuante. (4/3) é divisão inteira e retorna 1. Cuidado! M_PI é uma definição que está em math.h */
return vol; }
[5]
Escreva uma função que calcula e retornafloat calc_massa(float v, float d)
a massa de uma esfera (em kg). A função deverá receber o volume da esfera (em m3) e a densidade do material (em kg/m3).
{
float m;
m = v*d; //se d = m/v, então m = v*d...
return m; //se eu desejasse, poteria retornar direto a expressão } //return v*d; isso economizaria duas linhas de código...
[6]
Faça um programa que calcula a massa do planeta terra utilizando, necessariamente, as funções criadas nos exercícios 4 e 5. Utilize os dados da tabela abaixo:Raio médio da Terra: 6378,1 km
Densidade média da Terra: 5515,3 kg/m3
O programa deverá ler do teclado
#include <stdio.h>
o raio (em km) e a densidade (em kg/m3) da terra e chamar as funções para realizar os cálculos. A massa da terra deverá ser impressa em toneladas e em kg. Não se esqueça de realizar as conversões antes de chamar as funções.
#include <stdlib.h> #include <math.h> float calc_vol(float r) { float vol; vol = (4.0/3.0)*M_PI*r*r*r; return vol; }
float calc_massa(float v, float d) {
return v*d; //só para mostrar como posso escrever a função de
} //uma forma diferente... v e d já receberam seu valor
int main(void) {
float rterra,dterra,vterra,mterra;
printf("Entre com o raio medio da terra em km: "); scanf("%f",&rterra); //leio o raio da terra
printf("Entre com a densidade media terra em kg/m3: "); scanf("%f",&dterra); //leio densidade da terra
vterra = calc_vol(rterra*1000); //transformo para metros quando envio!!
mterra = calc_massa(vterra, dterra); //calculo a massa!
printf("A massa da terra e' kg: %e\n",mterra); mterra = mterra/1000; //kg -> toneladas
printf("A massa da terra e' toneladas: %e\n",mterra); system("PAUSE");
return 0; }
[7]
Escreva uma função que calcula e retornaO cálculo se baseia na tensão de polarização direta do LED (Vd), na corrente (i) desejada
(que influi na luminosidade) e na tensão aplicada ao circuito (Vi). Observe a figura abaixo.
o valor de resistência ideal para LEDs.
No circuito, a corrente é obtida aplicando-se a Lei de Kirchhoff das malhas ao circuito:
− + + = 0V V Vi R d
Aplicando a lei de Ohm a VR:
0
i d
V R i V − + ⋅ + =
Isolando-se R obtém-se a equação que define a resistência necessária para garantir uma corrente pré-definida, assim:
i d V V R i − =
Escreva um programa de teste para a função. Utilize os valores definidos na tabela abaixo para testar a função. (o resultado deverá ser 350 Ohms)
Vi: 10V Vd: 3V i 20mA #include <stdio.h> #include <stdlib.h> #include <math.h>
float calc_res(float vd, float v, float i) { float res; res = (v - vd)/i; return res; } int main(void) { float valimentacao,vpolarizacao,corrente,resistencia; valimentacao = 10; vpolarizacao = 3; corrente = 0.02; resistencia = calc_res(vpolarizacao,valimentacao,corrente); printf("Resistencia calculada: %f\n",resistencia);
system("PAUSE"); return 0;
[8]
Escreva uma função que calcula e imprime a reatância capacitiva (em Ohms) de um capacitor. 1 1 2 C X C f C ω π = =Onde XC é a reatância capacitiva [Ohms], f é a frequência em Hz e C é a
Capacitância [Farad].
O programa deverá ler do teclado a capacitância e a frequência e chamar a função para calcular e imprimir a reatância. Utilize, se desejar, a definição M_PI que está na biblioteca matemática (basta incluir #include <math.h> ao programa) e utilizar M_PI quando desejar utilizar o valor de π.
#include <stdio.h> #include <stdlib.h> #include <math.h>
void imp_reat(float C, float f) {
float reat;
reat = 1/(2*M_PI*f*C); //M_PI está definido em math.h printf("A reatancia capacitiva e': %f Ohms",reat); }
int main(void) {
float cap,freq;
printf("Digite a capacitancia\n"); scanf("%f",&cap); //leio a capacitancia printf("Digite a frequencia\n");
scanf("%f",&freq); //leio a capacitancia
imp_reat(cap,freq); //chamo a função para calcular e imprimir system("PAUSE");
return 0; }
[9]
Escreva uma função que calcula e retorna2
pk RMS
V = ⋅V
a potência de pico em um resistor sujeito a uma tensão senoidal. A função deverá receber como parâmetro o valor eficaz (RMS) da tensão e o valor da resistência. Para resolver o exercício, saiba que:
Vpk é o valor de pico da tensão senoidal cujo valor RMS é VRMS. Lembre-se que o valor RMS
é o valor usualmente utilizado em CA. Quando se fala 127V para designar a tensão de operação de um aparelho, o valor informado é o valor eficaz (RMS) da tensão.
Lembre-se também que a potência em uma resistência é obtida facilmente utilizando-se a relação: 2 V P R =
Dica: Podes utilizar a função sqrt() e a função pow() da biblioteca math.h. ( ) ( , ) y sqrt x x pow x y x → → #include <stdio.h> #include <stdlib.h> #include <math.h>
float calc_Ppk(float Vrms, float R) {
float P, Vpk;
Vpk = sqrt(2)*Vrms; //calculo tensao de pico P = pow(Vpk,2)/R; //calculo potência de pico return P; //retorno potência de pico }
int main(void) {
float tensao,resistencia,potencia; printf("Digite a Tensao eficaz\n"); scanf("%f",&tensao); //leio a tensao printf("Digite a Resistencia\n");
scanf("%f",&resistencia); //leio a resistencia potencia = calc_Ppk(tensao, resistencia);
printf("A potencia de pico dissipada e' %f\n",potencia); system("PAUSE");
return 0; }