Advertisement
sharivan

Exercícios de lógica da programação [07-10-2015]

Oct 7th, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. 1) Faça as seguintes conversões entre bases (sem uso de calculadora):
  2.  
  3. 1.1) Número 20 na base decimal para a base binária.
  4.  
  5. 1.2) Número 2C na base hexadecimal para a base decimal.
  6.  
  7. 1.3) Número 10011 na base binária para a base decimal.
  8.  
  9. 1.4) Número 99 na base decimal para a base hexadecimal.
  10.  
  11. 1.5) Número F3DA na base hexadecimal para a base binária.
  12.  
  13. 1.6) Número 110011 na base binária para a base octal.
  14.  
  15. 2) Dada a seguinte hierarquia de classes abaixo escritas em linguagem c++:
  16.  
  17. class Entity {
  18. public:
  19. float x;
  20. float y;
  21.  
  22. virual void Spawn() = 0; // método virtual puro (método abstrato)
  23.  
  24. virtual void SayHello() = 0; // método virtual puro (método abstrato)
  25.  
  26. void MoveTo(float x, float y) {
  27. this->x = x;
  28. this->y = y;
  29. }
  30. };
  31.  
  32. class Player: public Entity {
  33. public:
  34. int team;
  35.  
  36. void Spawn() {
  37. x = 10;
  38. y = 10;
  39. team = 0;
  40. }
  41. };
  42.  
  43. class Human: public Player {
  44. public:
  45. void Spawn() {
  46. Player::Spawn(); // chama o método Spawn da classe pai Player
  47.  
  48. team = 3;
  49. }
  50.  
  51. void SayHello() {
  52. printf("[%d][%f, %f] Eu quero frag!", team, x, y);
  53. }
  54. };
  55.  
  56. class Zombie: public Player {
  57. public:
  58. void Spawn() {
  59. Player::Spawn(); // chama o método Spawn da classe pai Player
  60.  
  61. team = 2;
  62. }
  63.  
  64. void SayHello() {
  65. printf("[%d][%f, %f] Hoioi uihihi iohuhu huhoi hooooooo!", team, x, y);
  66. }
  67. };
  68.  
  69. E dada o seguinte código abaixo:
  70.  
  71. Entity *entity;
  72. for (int i = 0; i < 10; i++) {
  73. int team;
  74. scanf("%d", team);
  75. switch (team) {
  76. case 2:
  77. entity = new Zombie;
  78. break;
  79. case 3:
  80. entity = new Human;
  81. break;
  82. default:
  83. prinf("Time inválido!");
  84. return;
  85. }
  86. entity->Spawn();
  87. entity->MoveTo(40, 80);
  88. entity->SayHello();
  89. }
  90.  
  91. Se for entrado os seguintes valores:
  92.  
  93. 2
  94. 2
  95. 3
  96. 3
  97. 2
  98. 3
  99. 3
  100. 2
  101. 2
  102. 3
  103.  
  104. Diga (sem a ajuda de um computador, compilador, interpretador ou qualquer outro tipo de ferramenta assistida) qual seria a saída desse código. Depois verifique com a ajuda de um programa em c++ (usando o compilador/editor/IDE de sua preferência) se sua resposta bate com a do programa.
  105.  
  106. 3) Usando uma das seguintes linguagens:
  107.  
  108. C
  109. C++
  110. C#
  111. Java
  112. Pascal
  113. Object Pascal (Delphi)
  114.  
  115. Faça um programa que leia um número decimal e converta esse número para uma string que represente este número nas bases binária, octal e hexadecimal. Faça isso sem a ajuda de qualquer API de sua linguagem preferida que realize conversões entre bases!
  116.  
  117. 4) Dado o seguinte algoritmo abaixo em c++ para o cálculo de distância entre dois pontos:
  118.  
  119. #include <stdio.h> // Include necessária para o uso das APIs de entrada e saída scanf e printf
  120. #include <math.h> // Include necessária para o uso da função de raiz quadrada sqrt
  121.  
  122. int main () {
  123. int x1;
  124. int y1;
  125. int x2;
  126. int y2;
  127.  
  128. printf("Digite as coordenadas (x1, y1)");
  129. scanf("%d", x1);
  130. scanf("%d", y1);
  131.  
  132. printf("Digite as coordenadas (x2, y2)");
  133. scanf("%d", x2);
  134. scanf("%d", y2);
  135.  
  136. int dx = x2 - x1;
  137. int dy = y2 - y1;
  138.  
  139. int dx2 = dx * dx;
  140. int dy2 = dy * dy;
  141.  
  142. int sum = dx2 + dy2;
  143.  
  144. float distance = sqrt(sum);
  145.  
  146. printf("A distância entre (%d, %d) e (%d, %d) é %f", x1, y1, x2, y2, distance);
  147.  
  148. return 0;
  149. }
  150.  
  151. 4.1) Verifique qual a saída dele para as seguintes entradas:
  152.  
  153. 4.1.1) x1=0 y1=0 x2=3 y2=4
  154. 4.1.2) x1=-1 y1=-3 x2=6 y2=15
  155. 4.1.3) x1=100 y1=150 x2=47000 y2=-49000
  156.  
  157. 4.2) A saída para o item 4.1.3 realmente bate com a distância verdadeira entre aquelas coordenadas? Se não, o que deveria ser feito no algoritmo para que ele funcionasse adequadamente para aqueles valores?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement