You are on page 1of 22

ECT2303 – Linguagem de Programação

Aula 16 þ Exercícios

Einstein Santos

UFRN

26 de setembro de 2018

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 1 / 22


Plano

1 Exercício 1

2 Exercício 2

3 Exercício 3

4 Exercício 4

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 2 / 22


Plano

1 Exercício 1

2 Exercício 2

3 Exercício 3

4 Exercício 4

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 3 / 22


Exercícios
Exercício 1 – Enunciado

1. Em teoria da probabilidade e na estatística, a covariância, ou variância con-


junta, é uma medida do grau de interdependência (ou inter-relação) numérica
entre duas variáveis aleatórias. Assim, variáveis independentes têm covariân-
cia zeroa . Abaixo é apresentado como calculá-la.
n
X
(Xi − X ) × (Yi − Y )
i=0
cov (X , Y ) =
n−1
Escreva um programa em C++ que leia dois vetores X e Y de tamanho n e
que utilize uma função auxiliar para calcular cov(X,X), cov(X,Y), cov(Y,X) e
cov(Y,Y).
a
https://pt.wikipedia.org/wiki/Covariância

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 4 / 22


Exercícios
Exercício 1 – Solução

1 # include < iostream >


2
3 using n a m e s p a c e std ;
4
5 float cov ( float [] , float [] , int ) ;
6 float ma ( float [] , int ) ;
7 void leVetor ( float [] , int ) ;
8
9 int main ()
10 {
11 int n ;
12
13 cout <<" Informe o tamanho dos vetores : " ;
14 cin >>n ;
15
16 float x [ n ] , y [ n ];
17
18 cout <<" Digite os elementos de X : " << endl ;
19 leVetor (x , n ) ;
20 cout <<" Digite os elementos de Y : " << endl ;
21 leVetor (y , n ) ;
22
23 cout <<" Covariância entre x e x : " << cov (x ,x , n ) << endl ;
24 cout <<" Covariância entre x e y : " << cov (x ,y , n ) << endl ;
25 cout <<" Covariância entre y e x : " << cov (y ,x , n ) << endl ;
26 cout <<" Covariância entre y e y : " << cov (y ,y , n ) << endl ;
27
28 return 0;
29 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 5 / 22


Exercícios
Exercício 1 – Solução (cont.)

1 void leVetor ( float w [] , int n )


2 {
3 for ( int i =0; i < n ; i ++)
4 cin >>w [ i ];
5 }
6
7 float cov ( float x [] , float y [] , int n )
8 {
9 float ma_x , ma_y , soma =0.0;
10
11 ma_x = ma (x , n ) ;
12 ma_y = ma (y , n ) ;
13
14 for ( int i =0; i < n ; i ++) {
15 soma += ( x [ i ] - ma_x ) *( y [ i ] - ma_y ) ;
16 }
17
18 return soma /( n -1) ;
19 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 6 / 22


Exercícios
Exercício 1 – Solução (cont.)

1 float ma ( float z [] , int n )


2 {
3 float soma =0.0;
4
5 for ( int i =0; i < n ; i ++)
6 soma += z [ i ];
7
8 return soma / n ;
9 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 7 / 22


Plano

1 Exercício 1

2 Exercício 2

3 Exercício 3

4 Exercício 4

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 8 / 22


Exercícios
Exercício 2 – Enunciado

2. Faça um programa em C++ que utilize uma função auxiliar para


embaralhar as respostas de uma avaliação constituída por 20
questões de múltipla escolha sendo cada uma formada por
cinco alternativas: ‘a’, ‘b’, ‘c’, ‘d’ e ‘e’. Cada alternativa deve
aparecer quatro vezes.
Ex.:
badaedaeccbeeabdcdbc
becbabddbcceeaeacdda
edabbebcadbeadcadecc

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 9 / 22


Exercícios
Exercício 2 – Solução

1 # include < iostream >


2 # include < cstdlib >
3 # include < ctime >
4
5 using n a m e s p a c e std ;
6
7 void e m b a r a l h a R e s p o s t a s ( char []) ;
8
9 int main ()
10 {
11 char respostas [21];
12
13 srand ( time ( NULL ) ) ;
14
15 e m b a r a l h a R e s p o s t a s ( respostas ) ;
16
17 cout <<" Respostas embaralhadas : " << endl ;
18 cout << respostas << endl ;
19
20 return 0;
21 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 10 / 22


Exercícios
Exercício 2 – Solução (cont.)

1 void e m b a r a l h a R e s p o s t a s ( char resp [])


2 {
3 char opcoes [] = " abcde " ;
4 int contOpcoes [5]={} , gera ;
5
6 for ( int i =0; i <20; i ++) {
7 gera = rand () %5;
8
9 if ( contOpcoes [ gera ] < 4) {
10 resp [ i ] = opcoes [ gera ];
11 contOpcoes [ gera ]++;
12 } else
13 i - -;
14 }
15
16 resp [20] = ’ \0 ’;
17 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 11 / 22


Plano

1 Exercício 1

2 Exercício 2

3 Exercício 3

4 Exercício 4

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 12 / 22


Exercícios
Exercício 3 – Enunciado

3. Em Ciência da Computação, FIFO (acrônimo para “First In, First


Out”, que em português significa “primeiro a entrar, primeiro a
sair”) refere-se a estruturas de dados do tipo fila. Em uma fila
os elementos vão sendo colocados e retirados (ou processa-
dos) por ordem de chegada. A ideia fundamental da fila é que
somente é possível inserir um novo elemento no final da fila e
somente é possível retirar o elemento do inícioa .
Escreva um programa em C++ que implemente uma fila de ta-
manho 5, cujos elementos são pertencentes ao intervalo [0;9].
As posições vazias devem armazenar o valor -1. Os casos de
fila vazia e fila cheia devem ser tratados.
a
https://pt.wikipedia.org/wiki/FIFO

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 13 / 22


Exercícios
Exercício 3 – Solução

1 # include < iostream >


2 # define TAM 5
3 using n a m e s p a c e std ;
4
5 void a di ci on a rN aF il a ( int []) ;
6 void removerNaFila ( int []) ;
1 if ( op == 1)
7 void exibirFila ( int []) ;
2 a di cion arN aFil a ( fila ) ;
8
3 else if ( op == 2)
9 int main ()
4 removerNaFila ( fila ) ;
10 {
5 else if ( op == 3)
11 int fila [ TAM ]={ -1 , -1 , -1 , -1 , -1} ,
6 exibirFila ( fila ) ;
op ;
7 } while ( op !=0) ;
12 do {
8
13 cout <<" Digite a opção :\ n " ;
9 return 0;
14 cout <<" 1 - Adicionar um
10 }
elemento ;\ n " ;
15 cout <<" 2 - remover um
elemento ;\ n " ;
16 cout <<" 3 - Exibir fila ;\ n " ;
17 cout <<" 0 - Sair .\ n " ;
18 cin >> op ;

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 14 / 22


Exercícios
Exercício 3 – Solução (cont.)

1 void a di ci on a rN aF il a ( int f [])


2 {
3 int elemento ;
4
5 cout <<" Digite um elemento [0;9]: " ;
6 cin >> elemento ;
7
8 for ( int i =0; i < TAM ; i ++) {
9 if ( f [ i ] == -1) {
10 f [ i ] = elemento ;
11 return ;
12 }
13 }
14
15 cout <<" Fila cheia ! " << endl ;
16 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 15 / 22


Exercícios
Exercício 3 – Solução (cont.)

1 void removerNaFila ( int f [])


2 {
3 if ( f [0] != -1) {
4 for ( int i =0; i < TAM -1; i ++) {
5 f [ i ] = f [ i +1];
6 }
7 f [4] = -1;
8 } else {
9 cout <<" Fila vazia ! " << endl ;
10 }
11 }
12
13 void exibirFila ( int f [])
14 {
15 for ( int i =0; i < TAM ; i ++)
16 cout <<f [ i ] <<" " ;
17
18 cout << endl ;
19 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 16 / 22


Plano

1 Exercício 1

2 Exercício 2

3 Exercício 3

4 Exercício 4

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 17 / 22


Exercícios
Exercício 4 – Enunciado

4. Em ciência da computação, uma pilha (‘‘stack” em inglês) é uma


estrutura de dados baseado no princípio de “Last In First Out”
(LIFO), ou seja “o último que entra é o primeiro que sai” carac-
terizando um empilhamento de dados. Pilhas são fundamental-
mente compostas por duas operações: “push” (empilhar) que
adiciona um elemento no topo da pilha e “pop” (desempilhar)
que remove o último elemento adicionadoa .
Escreva um programa em C++ que implemente uma pilha de
tamanho 5, cujos elementos são pertencentes ao intervalo [0;9].
As posições vazias devem armazenar o valor -1. Os casos de
pilha vazia e pilha cheia devem ser tratados.
a
https://pt.wikipedia.org/wiki/Pilha_(informática)

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 18 / 22


Exercícios
Exercício 4 – Solução

1 # include < iostream >


2 # define TAM 5
3 using n a m e s p a c e std ;
4
5 void a d i c i o n a r N aP i l h a ( int []) ;
1 if ( op == 1)
6 void remov erNaPilh a ( int []) ;
2 a d i ci on ar Na Pil ha (
7 void exibirPilha ( int []) ;
pilha ) ;
8
3 else if ( op == 2)
9 int main ()
4 remo verNaPilha ( pilha )
10 {
;
11 int pilha [ TAM ]={ -1 , -1 , -1 , -1 , -1} ,
5 else if ( op == 3)
op ;
6 exibirPilha ( pilha ) ;
12 do {
7 } while ( op !=0) ;
13 cout <<" Digite a opção :\ n " ;
8
14 cout <<" 1 - Adicionar um
9 return 0;
elemento ;\ n " ;
10 }
15 cout <<" 2 - remover um
elemento ;\ n " ;
16 cout <<" 3 - Exibir pilha ;\ n " ;
17 cout <<" 0 - Sair .\ n " ;
18 cin >> op ;

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 19 / 22


Exercícios
Exercício 4 – Solução (cont.)

1 void a d i c i o n a r N a P il h a ( int p [])


2 {
3 int elemento ;
4
5 cout <<" Digite um elemento [0;9]: " ;
6 cin >> elemento ;
7
8 for ( int i = TAM -1; i >=0; i - -) {
9 if ( p [ i ] == -1) {
10 p [ i ] = elemento ;
11 return ;
12 }
13 }
14 cout <<" Pilha cheia ! " << endl ;
15 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 20 / 22


Exercícios
Exercício 4 – Solução (cont.)

1 void remov erNaPilh a ( int p [])


2 {
3 if ( p [4] != -1) {
4 for ( int i =0; i < TAM ; i ++) {
5 if ( p [ i ] != -1) {
6 p [ i ] = -1;
7 return ;
8 }
9 }
10 } else {
11 cout <<" Pilha vazia ! " << endl ;
12 }
13 }
14
15 void exibirPilha ( int p [])
16 {
17 for ( int i =0; i < TAM ; i ++)
18 cout <<p [ i ] <<" " ;
19
20 cout << endl ;
21 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 21 / 22


Exercícios

Fim da aula 16

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 26 de setembro de 2018 22 / 22

You might also like