• Nenhum resultado encontrado

PN LISTA03 RESPOSTAS

N/A
N/A
Protected

Academic year: 2021

Share "PN LISTA03 RESPOSTAS"

Copied!
7
0
0

Texto

(1)

RESPOSTAS DOS EXERCÍCIOS – LISTA 3

[1]

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 <stdlib.h> #include <stdio.h> int main(void) { int a = 5; if ( (a > 4) && (a < 0) ) printf("Lista 03 "); printf("Comando if"); system("PAUSE"); return 0; }

(b)

#include <stdlib.h> #include <stdio.h> int main(void) { int a = 5; if ( a ) printf("Lista 03 "); printf("Comando if"); system("PAUSE"); return 0; }

(c)

#include <stdlib.h> #include <stdio.h> int main(void) { int a = 5; if ( !a ) printf("Lista 03 "); else printf("Comando if"); system("PAUSE");

return 0; }

(2)

#include <stdio.h> #include <math.h> int main(void) { int a = 5, b = 0; if ( b != 0 ) a = pow(a,b); else a = pow(a,(b+1)); printf("%d\n",a); system("PAUSE"); return 0; }

(e)

#include <stdlib.h> #include <stdio.h>

int funcao(int var) { if(var > 10) return 1; else return 2; } int main(void) { int a = 5;

if(funcao(20) == 2) printf("If e' complicado"); else printf("Ou nao...");

system("PAUSE"); return 0;

}

(f)

#include <stdlib.h> #include <stdio.h>

char funcao(int var) {

if(var == '8') return 'A'; else return 'B'; } int main(void) { int a = 5; putchar(funcao(8)); system("PAUSE"); return 0; }

(3)

(g)

#include <stdlib.h> #include <stdio.h>

char funcao(int var) {

if(var == '8') return 'A'; else return '8';

}

int main(void) {

int a = 5;

putchar( funcao( funcao(8) ) ); //essa é complicada...

system("PAUSE"); return 0;

}

[2]

Considerando as cinco variáveis declaradas como segue: int a =

5

, b =

4

, c =

3

, d =

2

, y;

Qual o valor atribuído a y nas expressões abaixo?

a) y = ( a > b );

1

b) y = ( (a/d) > d );

0

c) y = b/a;

0

d) y = b/(a-b);

4

e) y =

102.49

;

102

f) y = ( b && (a-c+d) );

1

g) y = ( !(d/a) && (a/

7

) );

0

h) y = 'X' +

10

;

98

i) y = ( !(d/c) || (a/

7

) );

1

j) y = ( (!(d/a) || (a/

7

)) && (a/

7

) );

0

[3]

Crie uma função que realiza a conversão de radianos para graus. A função deverá receber o

ângulo em radianos e retorná-lo em graus

.

float rad2gra(float ang) {

return 360*ang/(2*M_PI); }

(4)

complexo qualquer. A função deverá receber como parâmetros, além da parte real e

imaginária do número, uma variável de controle

2 2 1

tan

a

b

Z

b

a

φ

=

+

 

=

 

 

que indique qual operação a função

deverá realizar. Lembre-se que, para um número complexo z = a + j·b:

Utilize a função float atan(float __x) da biblioteca math.h

Essa função retorna o arco-tangente em radianos.

Utilize a função do exercício anterior para retornar o ângulo em graus.

float mod_ou_arg(float re, float im, int controle)

{

float aux;

//se minha variável de controle for zero retorno módulo:

if(controle == 0) return (sqrt(re*re + im*im)); //senão retorno argumento:

else {

aux = atan(im/re); //atan retorna em radianos!

return rad2gra(aux); //a função converte o valor antes de retornar

} //a função rad2gra já deve ter sido desenvolvida

}

Programa para testar as funções:

#include <stdlib.h>

#include <stdio.h> #include <math.h>

float rad2gra(float ang) {

return 360*ang/(2*M_PI); }

float mod_ou_arg(float re, float im, int controle) {

float aux;

//se minha variável de controle for zero retorno módulo:

if(controle == 0) return (sqrt(re*re + im*im)); //senão retorno argumento:

else {

aux = atan(im/re); //atan retorna em radianos!

return rad2gra(aux); //a função converte o valor antes de retornar

} //a função rad2gra já deve ter sido desenvolvida

}

int main(void) {

float mod, arg;

mod = mod_ou_arg(5,5,0); //zero calcula modulo

arg = mod_ou_arg(5,5,1); //qualquer outra coisa calcula argumento

printf("O numero 5 + j5 possui modulo %f e angulo de fase %f\n",mod,arg); system("PAUSE");

return 0; }

(5)

[5]

Escreva uma função que calcula e retorna

#include <stdlib.h>

a soma, subtração, multiplicação ou divisão de

dois números. A função deverá receber como parâmetros, além dos dois números, um

caractere de controle (com o caractere da operação a ser realizada). A função deverá

selecionar a operação adequadamente utilizando a escada if-else-if.

#include <stdio.h>

float multioperacao(float a, float b, char controle) {

if(controle == '+') return a+b; //se receber '+', retorna soma

else if(controle == '-') return a-b; //senão, se receber '-', retorna sub.

else if(controle == '*') return a*b; //senão se '*' multiplica

else return a/b; //senão, só sobrou dividir...

}

int main(void) //só para testar a função...

{

printf("%f\n",multioperacao(4,3,'/')); system("PAUSE");

return 0; }

[6]

Analisando a relação tensão-corrente de um diodo zener nota-se que, caso se deseje obter

a corrente em função da tensão, uma função definida por partes pode ser utilizada para

representar o diodo. Sem mais detalhes, a função definida por partes pode ser escrita

como:

| ( ) 0 | | Z z Z z D D D D v V v v V r i v v V v V v V v v V r +  < −   = ∀ − > >  −  ∀ > 

Escreva uma função que retorne a corrente

#include <stdlib.h>

em um diodo zener para qualquer tensão

aplicada em seus terminais. A função deverá receber como parâmetros V

Z

, V

D

, r

D

, r

Z

e a

tensão v aplicada ao diodo.

#include <stdio.h>

float corrente(float VZ, float VD, float rD, float rZ, float v) {

if(v < -VZ) return (v + VZ)/rZ; //se v for menor que VZ...

else if(v > VD) return (v - VD)/rD; //senão, se v for maior que VD

else return 0; //senão eu retorno zero

}

int main(void) //só para testar a função

{

printf("%f\n",corrente(5.8,0.7,0.5,3,-7)); system("PAUSE");

return 0; }

(6)

Além disso, a função deverá calcular e imprimir na tela o valor das raízes s

1

e s

2

da solução

do circuito. A função deverá receber como parâmetros a resistência R, a capacitância C e a

indutância L do circuito.

Ao aplicar as Leis de Kirchhoff para obter a resposta a entrada zero, obtém-se uma

equação diferencial ordinária (EDO) de segunda ordem com a forma:

2 0

( )

2

( )

( )

0

y t

+

ζ

y t

+

ω

y t

=



Onde:

ζ é o fator de amortecimento e ω

0

é a frequência de ressonância. Esses parâmetros, para o

circuito série, são apresentados abaixo:

0

2

1

R

L

LC

ζ

ω

=

=

Caso ζ > ω

0

, a resposta será SUPERAMORTECIDA, se ζ = ω

0

a resposta será CRITICAMENTE

AMORTECIDA. Finalmente, se ζ < ω

0

a resposta será SUB-AMORTECIDA.

Os valores das raízes da equação, para cada caso, estão dispostos na tabela abaixo.

TIPO DA RESPOSTA

Raízes

SUPERAMORTECIDO

2 2 1 0 2 2 2 0

s

s

ζ

ζ

ω

ζ

ζ

ω

= − +

= − −

CRITICAMENTE AMORTECIDA

s

1

=

s

2

= −

ζ

SUB-AMORTECIDA

2 2 1 0 2 2 2 0

s

j

s

j

ζ

ω

ζ

ζ

ω

ζ

= − +

= − −

(7)

#include <stdlib.h> #include <stdio.h> #include <math.h>

void RLCserie(float R, float L, float C) {

float fa,wr,s1,s2,re,im;

printf("A resposta de um ckt RLC serie onde:\n");

printf("R = %f Ohms, L = %f H e C = %f F sera:\n",R,L,C);

//calculo do fator de amortecimento e prequencia de ressonancia:

fa = R/(2*L); wr = 1/sqrt(L*C);

//verificação do tipo de resposta:

if (fa > wr) //se fa for maior que wr então é superamortecida

{

printf("SUPERAMORTECIDA, com raizes em:\n"); printf("s1 = %f, ",-fa-sqrt(fa*fa-wr*wr)); printf("s2 = %f\n",-fa+sqrt(fa*fa-wr*wr)); }

else {

if(fa == wr) //se fa for igual a wr, entao é criticamente amortecida

{

printf("CRITAMENTE AMORTECIDA, com raizes em:\n"); printf("s1 = s2 = %f\n",-fa);

}

else //senão só resta ser subamortecida

{

printf("SUBAMORTECIDA, com raizes em:\n");

printf("s1 = %f + %fj, ", -fa, -sqrt(wr*wr-fa*fa)); printf("s2 = %f + %fj\n", -fa, sqrt(wr*wr-fa*fa)); }

} }

int main(void) //só para testar a função

{ float r,l,c; printf("Digite R: "); scanf("%f",&r); printf("Digite L: "); scanf("%f",&l); printf("Digite C: "); scanf("%f",&c); RLCserie(r,l,c); system("PAUSE"); return 0; }

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Portanto, mesmo percebendo a presença da música em diferentes situações no ambiente de educação infantil, percebe-se que as atividades relacionadas ao fazer musical ainda são

O desafio em tela continua residindo, portanto, no acionamento do conceito de comunicação, dando-o não apenas como troca informativa ou simples controle e domínio monológico

desconto diferenciado para as operações identificadas como day trade durante o processo de tarifação para os mercados Vista, Fracionário, Exercício e Leilão; • Diretos:

Os resultados não foram satisfatórios, para alguns alunos, podemos dizer que está sendo positivo, mas para a maioria está sendo negativo, pela dificuldade de acesso.. Não

Excluindo as operações de Santos, os demais terminais da Ultracargo apresentaram EBITDA de R$ 15 milhões, redução de 30% e 40% em relação ao 4T14 e ao 3T15,

Esta pesquisa discorre de uma situação pontual recorrente de um processo produtivo, onde se verifica as técnicas padronizadas e estudo dos indicadores em uma observação sistêmica

62 daquele instrumento internacional”, verifica-se que não restam dúvidas quanto à vinculação do Estado Brasileiro à jurisdição da Corte Interamericana, no que diz respeito a