Advertisement
Guest User

easynoobs

a guest
Nov 26th, 2014
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. //Estefania Guajardo A00813202
  2. //Andres Marcelo Garza A00814236
  3.  
  4. #include <iostream>
  5. #include <iomanip>
  6. using namespace std;
  7. int mediana(double [], int);
  8. int mayor(int, int);
  9. int menor(int, int);
  10. double sacaMediana(double [],double [],int);
  11.  
  12. int main()
  13. {
  14. double arregloA[500] ,arregloB[500];
  15. int casos, n;
  16. int contador = 0;
  17. cin >> casos;
  18. while(casos > 0)
  19. {
  20. cin >> n;
  21. for(int i = 0; i < n; i++)
  22. {
  23. cin >>arregloA[i];
  24. }
  25. for(int x = 0; x < n; x++)
  26. {
  27. cin >>arregloB[x];
  28. }
  29. cout << "Median case "<<contador +1 <<": "<<setprecision(2)<<fixed<<sacaMediana(arregloA,arregloB,n)<<endl;
  30. casos--;
  31. contador++;
  32. }
  33.  
  34. }
  35.  
  36. int mediana(double arrp[], int n)
  37. {
  38. if (n%2 == 0)
  39. return (arrp[n/2] + arrp[n/2-1])/2;
  40. else
  41. return arrp[n/2];
  42. }
  43.  
  44. int mayor(int a, int b)
  45. {
  46. if(a > b)
  47. {
  48. return a;
  49. }
  50. else
  51. {
  52. return b;
  53. }
  54. }
  55.  
  56. int menor(int a, int b)
  57. {
  58. if(a < b)
  59. {
  60. return a;
  61. }
  62. else
  63. {
  64. return b;
  65. }
  66. }
  67.  
  68. double sacaMediana(double arreglomen[],double arreglomayor[],int n)
  69. {
  70. int media1;
  71. int media2;
  72.  
  73. if( n == 0)
  74. return -1;
  75. if(n == 1)
  76. return (arreglomen[0] + arreglomayor[0]) / 2.00;
  77. if(n == 2)
  78. return (mayor(arreglomen[0],arreglomayor[0]) + menor(arreglomayor[1],arreglomen[1]))/2.00;
  79.  
  80. if(n > 2)
  81. {
  82. media1 = mediana(arreglomen,n);
  83.  
  84. media2 = mediana(arreglomayor,n);
  85.  
  86. if(media1 == media2)
  87. return media2;
  88.  
  89. if(media1 < media2)
  90. {
  91. if( n % 2 != 0)
  92. {
  93. return sacaMediana(arreglomen + n/2,arreglomayor,n -(n/2));
  94. }
  95. else
  96. sacaMediana(arreglomen + n/2 - 1,arreglomayor,n-(n/2) + 1);
  97.  
  98. }
  99. else
  100. {
  101. if( n % 2 != 0)
  102. {
  103. return sacaMediana(arreglomayor + n/2,arreglomen,n -(n/2));
  104. }
  105. else
  106. return sacaMediana(arreglomayor + n/2 - 1,arreglomen,n-(n/2) + 1);
  107. }
  108. }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement