Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.util.ArrayList;
  3. import java.util.StringTokenizer;
  4.  
  5. class Produto {
  6. String nome;
  7. double PVP;
  8. double lucroPercent;
  9. double lucroEUR;
  10. double receita;
  11. double lucro;
  12. int qtVendido;
  13.  
  14. Produto(String nome, double PVP, double lucroPercent) {
  15. this.nome = nome;
  16. this.PVP = PVP;
  17. this.lucroPercent = lucroPercent;
  18. this.lucroEUR = lucroPercent * PVP;
  19. }
  20. }
  21.  
  22.  
  23. public class ExeA {
  24.  
  25. public static void main(String[] arguments) {
  26. long time, timeOrder=0;
  27. String input, num, nome, pvp, lucroP;
  28. StringTokenizer st;
  29. long tStart, tEnd;
  30. long tStart2, tEnd2;
  31. int numProdutos;
  32.  
  33. do {
  34. timeOrder=0;
  35. input = readLn(200);
  36. st = new StringTokenizer(input.trim());
  37. num = st.nextToken();
  38. numProdutos = Integer.parseInt(num);
  39.  
  40. Produto[] produtos = new Produto[numProdutos];
  41.  
  42. // produtos à venda no supermercado
  43. for (int i=0; i<numProdutos; i++) {
  44. input = readLn(200);
  45. st = new StringTokenizer(input.trim());
  46. nome = st.nextToken();
  47.  
  48. pvp = st.nextToken();
  49.  
  50. lucroP = st.nextToken();
  51.  
  52. Produto novoProduto = new Produto(nome, Double.parseDouble(pvp), Double.parseDouble(lucroP));
  53. produtos[i] = novoProduto;
  54. }
  55.  
  56. input = readLn(200);
  57. st = new StringTokenizer(input.trim());
  58. num = st.nextToken();
  59. int numVendas = Integer.parseInt(num);
  60. String quantidade;
  61.  
  62. // produtos vendidos
  63. for (int i=0; i<numVendas; i++) {
  64. input = readLn(200);
  65. st = new StringTokenizer(input.trim());
  66. nome = st.nextToken();
  67.  
  68. quantidade = st.nextToken();
  69.  
  70. // procura objeto produto pelo nome no arrayList dos produtos
  71. //tStart2 = System.nanoTime();
  72. Produto p = procuraProdutoNome(produtos, nome);
  73. //tEnd2 = System.nanoTime();
  74. //timeOrder += tEnd2 - tStart2;
  75.  
  76. if (p != null) {
  77. p.qtVendido = Integer.parseInt(quantidade);
  78. p.lucro += p.lucroEUR*p.qtVendido;
  79. p.receita += p.PVP*p.qtVendido;
  80. }
  81. }
  82.  
  83. tStart2 = System.nanoTime();
  84.  
  85.  
  86. //System.out.println("Lucro");
  87. produtos = ordenaLucro(produtos);
  88. //imprimeArray(produtos);
  89.  
  90. //System.out.println("Receita");
  91. produtos = ordenaReceita(produtos);
  92. //imprimeArray(produtos);
  93.  
  94. tEnd2 = System.nanoTime();
  95. timeOrder += tEnd2 - tStart2;
  96.  
  97.  
  98. //System.out.println("Tempo Ordenamento: "+timeOrder+" nanosegundos");
  99. //System.out.println("Tempo Total: "+time+" nanosegundos");
  100. double d = (double)(timeOrder/1000000);
  101. System.out.println(d);
  102. //System.out.println(time);
  103.  
  104. } while(numProdutos!=0);
  105.  
  106. }
  107.  
  108. static void imprimeArray(Produto[] produtos) {
  109. for (Produto p: produtos)
  110. System.out.println(p.nome);
  111. }
  112.  
  113. static Produto[] ordenaReceita(Produto[] p) {
  114. int n = p.length;
  115. Produto temp;
  116.  
  117. for (int i = 0; i < n; i++) {
  118. for (int j = 1; j < (n - i); j++) {
  119.  
  120. if (p[j - 1].receita < p[j].receita) {
  121. temp = p[j - 1];
  122. p[j - 1] = p[j];
  123. p[j] = temp;
  124. }
  125.  
  126. }
  127. }
  128. return p;
  129. }
  130.  
  131. static Produto[] ordenaLucro(Produto[] p) {
  132. int n = p.length;
  133. Produto temp;
  134. for (int i = 0; i < n; i++) {
  135. for (int j = 1; j < (n - i); j++) {
  136.  
  137. if (p[j - 1].lucro < p[j].lucro) {
  138. temp = p[j - 1];
  139. p[j - 1] = p[j];
  140. p[j] = temp;
  141. }
  142.  
  143. }
  144. }
  145. return p;
  146. }
  147.  
  148. static Produto procuraProdutoNome(Produto[] produtos, String nome) {
  149. for (Produto p: produtos) {
  150. if (p.nome.equals(nome))
  151. return p;
  152. }
  153. return null;
  154. }
  155.  
  156. // leitura do input
  157. static String readLn(int maxLg) { //utility function to read from stdin
  158. byte lin[] = new byte[maxLg];
  159. int lg = 0, car = -1;
  160. String line = "";
  161. try {
  162. while (lg < maxLg) {
  163. car = System.in.read();
  164. if ((car < 0) || (car == '\n')) {
  165. break;
  166. }
  167. lin[lg++] += car;
  168. }
  169. } catch (IOException e) {
  170. return (null);
  171. }
  172. if ((car < 0) && (lg == 0)) {
  173. return (null); // eof
  174. }
  175. return (new String(lin, 0, lg));
  176. }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement