You are on page 1of 5

Lista de exercícios da unidade 8

1a. Questao (fácil, Code Blocks ok )


A RAND Corporation publicou em 1955 “A Million Random Digits”, um clássico da pesquisa em
quantidades aleatórias genuínas, republicado em 2001. Um pequeno extrato dele é o seguinte:

Em homenagem ao trabalho (e à paciência) desses pesquisadores, crie um arquivo de texto de


números pseudoaleatórios – por meio da função rand() - que emule esse trabalho pioneiro na
Ciência de Dados. Siga a seguintes regras:
• O arquivo terá mil linhas;
• Cada linha terá onze colunas:
◦ A primeira delas é o índice da linha, de zero a 999;
◦ As demais estão divididas em dois grupos de cinco números pseudoaleatórios;
◦ A coluna dos índices está separada da primeira coluna do primeiro grupo por uma
tabulação. Da mesma forma, uma tabulação separa a última coluna do primeiro grupo de
pseudoaleatórios da primeira coluna do segundo grupo;
◦ Uma linha é “pulada” a cada dez;
• Os números pseudoaleatórios variam de 0 a 99.999; e
• Tanto os índices quantos os dados serão completados com zeros à esquerda até totalizarem
cinco dígitos.

Exemplo de saída:
Meu arquivo randomico...

00000 20388 24637 01062 29763 14738 27938 15019 00339 10175 27841
00001 16023 18803 16123 05758 14417 10167 12565 19384 24389 09007
00002 08433 15254 07828 20679 03291 29700 29193 03180 13083 01016
00003 03920 19824 09418 04858 12130 06704 31460 04579 03140 24308
00004 24990 26853 26353 11286 28153 18123 10645 08039 29079 30082
00005 31227 31950 16589 22489 20553 14898 07931 29829 26091 00666
00006 17688 12904 04301 29843 13969 10771 24269 08147 22612 12425
00007 01392 01563 32295 32581 31187 09058 25151 07551 17637 16687
00008 15118 28332 26580 06471 25436 02628 25797 02952 18585 16583
00009 16328 27413 04978 29186 03083 09907 16034 06287 22862 20595
00010 04107 11931 05526 18578 10245 20459 14118 03997 06902 15649

00011 17067 00984 18723 09276 00439 03553 26821 21087 32112 00145
00012 30304 13011 04490 12323 32592 16206 11122 01176 31396 17782
00013 02508 02905 09264 09633 04128 19487 03550 28383 00720 25872
00014 23365 31802 16206 12843 23421 30524 17547 00997 30001 25522
00015 08115 10516 06389 06320 04375 20493 11738 19157 32107 00777
00016 11328 03024 32561 17358 23276 25379 11381 02699 25179 25639
00017 25787 11267 10837 25937 15158 27373 13765 15539 20794 14491
00018 28871 09670 13556 26843 09475 13414 06233 23835 02106 31006
00019 29788 27344 06430 15014 27748 00280 15975 26794 01533 20893
00020 23587 11213 02253 00189 21325 14062 06859 08425 08098 15786

00021 27819 32075 01968 13346 02716 30636 04912 15358 09526 32148
00022 15253 25266 26286 22707 02789 05375 10317 24191 07368 27581
00023 07200 17183 13791 13785 16112 05000 25942 25498 09844 06886
00024 25789 14120 32710 14141 10771 24142 21012 24912 24612 22911
00025 22936 27586 14614 21527 03786 15739 20286 20964 11732 02893
00026 02104 21989 21062 21719 11830 26193 31499 10410 13208 04571
00027 02716 29611 21693 23093 06003 24505 03097 10195 08387 01423
00028 03208 10993 31590 30187 13794 19927 02838 24048 14288 07260
00029 07137 19144 22238 17577 28631 20623 02001 05439 21766 06252
00030 21818 07228 22440 06657 17227 19417 25754 01030 09706 18488

. . . . . . . .
2a. Questão (média, Code Blocks ok)
A “ASCII art” é uma forma de expressão artística usando apenas os caracteres disponíveis na tabela
ASCII e similares. Segue abaixo, um exemplo do arquivo “saturno.txt”:

Crie um programa em C99 que gere um novo arquivo de texto, com uma versão espelhada dessa
imagem.

Sugestão: abra o arquivo original em texto para descobrir a largura das linhas. Depois, reabra-o
como se binário fosse, para proceder a inversão das linhas no novo arquivo.
3a. Questão (difícil, Code Blocks ok)
Um obuseiro posicionado na origem de um sistema de eixos atira com um ângulo a sobre um
terreno de inclinação b ( a > b), um projetil de velocidade inicial v0. Desprezando-se a resistência o
ar, seja r = v0 cosa t i + (v0 sena -g t /2)t j o vetor posição do projetil no instante t. Crie um
programa em C99 que
1. Recebe a velocidade inicial do projetil, em m/s;
2. Recebe os ângulos a e b, em graus;
3. Termine a execução caso b > a;
4. Receba o nome do arquivo texto do teclado (máximo de 10 letras, sem espaços) e sem a
extensão “.txt”, porém o arquivo gerado terá essa externsão. Use a funçao fgets() (limpe o
buffer do teclado se necessário);
5. Crie uma estrutura “posicao” que contenha as informações tempo, altura e distância. Aloque
dinamicamente um vetor com, inicialmente, 10 unidades para um tipo dessa estrutura;
6. Em intervalos de 0,1 segundos, calcule as componentes em i e j da posição do projetil e as
salve em arquivo de texto. Concomitantemente, preencha as mesma informações no vetor de
posições e a aumente em mais 10 unidades sempre que seu limite for atingido. Considere g
= 9,81 m/s2 e a implemente como constante.
7. Encerre o laço quando o projetil impactar o plano inclinado;
8. Feche o arquivo; e
9. Percorre o vetor de posições para imprimir na tela a ordenada máxima, sua abscissa
correspondente, e o tempo para atingi-la. Feito isso, a memória alocada é liberada

Sugestão: considere q = -senb i + cosb j como um vetor unitário perpendicular ao plano inclinado.
O projetil acertará sobre o plano inclinado quando o produto escalar r · q for zero (ou recém
negativar). Descarte o caso trivial quando t = 0.

Atenção: as funções sin() e cos() da biblioteca math.h recebem o ângulo em radianos.

b
a

Exemplo de execução:
***Calculador de impactos***
Insira a velocidade inicial (m/s): 60
Insira a elevacao do tubo (em graus): 40
Insira a inclinacao do terreno (em graus): 15
Digite o nome do arquivo a salvar (sem a extensao): trajetoria
O impacto ocorreu em
tempo: 5.5 s
distancia:248.2 m
altura: 65.2 m

Altura maxima foi 75.8m, na distancia de 179.3m, aos 3.9 seg.


Process returned 0 (0x0) execution time : 14.244 s
Press any key to continue.
No arquivo gerado:

V0 = 60.0 alfa = 40.0 beta = 12.0

Tempo Dist Alt


0.0 0.0 0.0
0.1 4.6 3.8
0.2 9.2 7.5
0.3 13.8 11.1
0.4 18.4 14.6
0.5 23.0 18.1
0.6 27.6 21.4
0.7 32.2 24.6
0.8 36.8 27.7
0.9 41.4 30.7
⁞ ⁞ ⁞
3.1 142.5 72.4
3.2 147.1 73.2
3.3 151.7 73.9
3.4 156.3 74.4
3.5 160.9 74.9
3.6 165.5 75.3
3.7 170.1 75.5
3.8 174.7 75.7
3.9 179.3 75.8
4.0 183.9 75.8
4.1 188.4 75.7
4.2 193.0 75.5
4.3 197.6 75.1
4.4 202.2 74.7
4.5 206.8 74.2
4.6 211.4 73.6
4.7 216.0 72.9
4.8 220.6 72.1
⁞ ⁞ ⁞

You might also like