Guest User

Untitled

a guest
May 21st, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.90 KB | None | 0 0
  1. public class ManipuladorDeArray
  2. {
  3. /**
  4. * Obtém a soma dos números do array.
  5. *
  6. * @param numeros O array contendo os números.
  7. * @return Retorna a soma dos números. Se o array estiver vazio retorna zero.
  8. */
  9. public int calculeSoma(int[] numeros) {
  10. int soma=0;
  11. for(int i = 0; i< numeros.length; i++)
  12. soma = soma + numeros[i];
  13. return soma;
  14. }
  15.  
  16. /**
  17. * Obtém os números que estão em posições ímpares, ou seja, retorna os números das posições 1, 3, 5, etc.
  18. *
  19. * @param numeros Os números.
  20. * @return Retorna os números que estão em posições ímpares.
  21. */
  22. public int[] encontreEmPosicoesImpares(int[] numeros) {
  23. int[]resultado= new int[(numeros.length/2)];
  24. int contador = 0;
  25. for (int i=1;(i<numeros.length);i=i+2){
  26. resultado[contador] = numeros[i];
  27. contador++;
  28. }
  29. return resultado ;
  30. }
  31.  
  32. /**
  33. * Obtém o primeiro e o último número do array.
  34. *
  35. * @param numeros Os números.
  36. * @return Retorna um array de tamanho 2 onde o primeiro número é o primeiro número do array numeros e o segundo número é
  37. * o último número do array numeros. Caso o array tenha menos de dois números então retorna um array de tamanho zero.
  38. */
  39. public int[] obtenhaPrimeiroEUltimo(int[] numeros) {
  40. int resultado[];
  41. if (numeros.length<2){
  42. resultado = new int[]{};
  43. }
  44. else{
  45. resultado= new int[]{numeros[0],numeros[numeros.length-1]};
  46. }
  47. return resultado ;
  48. }
  49.  
  50. /**
  51. * Conta quantas vezes um número aparece em um array.
  52. *
  53. * @param numeros Os números.
  54. * @param numero O número.
  55. * @return Retorna quantas vezes o numero aparece no array numeros.
  56. */
  57. public int conteQuantasOcorrencias(int[] numeros, int numero) {
  58. int ocorrencias = 0;
  59. for (int i=0;i<numeros.length;i++){
  60. if (numeros[i]==numero)
  61. ocorrencias++;
  62. }
  63. return ocorrencias;
  64. }
  65.  
  66. /**
  67. * Obtém o maior número do array. Considere que o array sempre possui pelo menos um número.
  68. *
  69. * @param numeros Os números.
  70. * @return Retorna o maior número do array numeros.
  71. */
  72. public int obtenhaMaiorNumero(int[] numeros) {
  73. int maior=numeros[0];
  74. for(int i=1;i<numeros.length;i++)
  75. if (numeros[i]>maior)
  76. maior=numeros[i];
  77. return maior;
  78. }
  79.  
  80. /**
  81. * Obtém a posição do maior número no array.
  82. *
  83. * @param numeros Os números.
  84. * @return Retorna a posição do maior número no array numeros. Se o array tiver tamanho zero
  85. * então retorna -1.
  86. */
  87. public int obtenhaPosicaoDoMaiorNumero(int[] numeros) {
  88. if (numeros.length==0)
  89. return -1;
  90. int maior=numeros[0];
  91. int posicaoMaior=0;
  92. for(int i=1;i<numeros.length;i++)
  93. if (numeros[i]>maior){
  94. maior=numeros[i];
  95. posicaoMaior=i;
  96. }
  97. return posicaoMaior;
  98. }
  99.  
  100. /**
  101. * Conta quantos números no array são maiores que um número limite.
  102. *
  103. * @param numeros Os números.
  104. * @param limite O limite.
  105. * @return Retorna a quantidade de números acima de limite.
  106. */
  107. public int conteQuantidadeAcimaDeLimite(int[] numeros, int limite) {
  108. int quantidadeDeMaiores=0;
  109. for(int i=0;i<numeros.length;i++)
  110. if (numeros[i]>limite)
  111. quantidadeDeMaiores++;
  112. return quantidadeDeMaiores;
  113. }
  114.  
  115. /**
  116. * Calcula a média simples dos números. Considere que o array sempre tem pelo menos um número.
  117. *
  118. * @param numeros Os números.
  119. * @return Retorna a média dos números.
  120. */
  121. public float calculeMedia(int[] numeros) {
  122. float soma = calculeSoma(numeros);
  123. float quantos = numeros.length;
  124. float media = soma/quantos;
  125. return media;
  126. }
  127.  
  128. /**
  129. * Calcula quantos números estão dentro de um intervalo. Exemplo: se o intervalo for [10,40] então estarão no intervalo
  130. * os números que forem maiores ou iguais a 10 e menores ou iguais a 40.
  131. *
  132. * @param numeros Os números.
  133. * @param limiteInferior O limite inferior do intervalo.
  134. * @param limiteSuperior O limite superior do intervalo.
  135. * @return Retorna a quantidade de números dentro do intervalo.
  136. */
  137. public int retorneQuantosNoIntervalo(int[] numeros, int limiteInferior, int limiteSuperior) {
  138. int quantidadeNumerosDentro = 0;
  139. for(int i=0;i<numeros.length;i++)
  140. if (numeros[i]>=limiteInferior&&limiteSuperior>=numeros[i])
  141. quantidadeNumerosDentro++;
  142. return quantidadeNumerosDentro;
  143. }
  144.  
  145. /**
  146. * Multiplica cada número do array por um determinado fator.
  147. *
  148. * @param numeros Os números.
  149. * @param fator O fator.
  150. */
  151. public void multipliquePorFator(int[] numeros, int fator) {
  152. for (int i=0;i<numeros.length;i++)
  153. numeros[i]= numeros[i]*fator;
  154. }
  155.  
  156. /**
  157. * Obtém uma cópia do array contendo os números multiplicados por um determinado fator. Exemplo:
  158. * se o array for [8,3,1] e o fator for 3 então retorna o novo array [24,9,3].
  159. *
  160. * @param numeros Os números.
  161. * @param fator O fator.
  162. * @return Retorna um array contendo os números multiplicados pelo fator.
  163. */
  164. public int[] obtenhaMultiplicadoPorFator(int[] numeros, int fator) {
  165. int []copia=new int[numeros.length];
  166. for (int i=0;i<numeros.length;i++)
  167. copia[i]= numeros[i]*fator;
  168. return copia;
  169. }
  170.  
  171. /**
  172. * Obtém uma cópia dos n primeiros números do array. Se n for maior que a quantidade
  173. * de números do array então obtém uma cópia de todos os números do array.
  174. *
  175. * @param numeros Os números.
  176. * @param n A quantidade de números a serem copiados.
  177. * @return Retorna a cópia dos n primeiros números.
  178. */
  179. public int[] copieNPrimeiros(int[] numeros, int n) {
  180. int tamanhoDoArray = n;
  181. if (n>numeros.length){
  182. tamanhoDoArray = numeros.length;
  183. }
  184. int []copia=new int[tamanhoDoArray];
  185. for (int i=0;i<tamanhoDoArray;i++){
  186. copia[i]= numeros[i];
  187. }
  188. return copia;
  189. }
  190.  
  191. /**
  192. * Obtém uma cópia dos números do array.
  193. *
  194. * @param numeros Os números
  195. * @return Retorna uma cópia dos números.
  196. */
  197. public int[] obtenhaCopia(int[] numeros) {
  198. int []copia=new int[numeros.length];
  199. for (int i=0;i<numeros.length;i++)
  200. copia[i]= numeros[i];
  201. return copia;
  202. }
  203.  
  204. /**
  205. * Obtém todos os números do array que estão dentro de um intervalo.
  206. *
  207. * @param numeros Os números.
  208. * @param limiteInferior O limite inferior do intervalo.
  209. * @param limiteSuperior O limite superior do intervalo.
  210. * @return Retorna os números que estão no intervalo.
  211. */
  212. public int[] obtenhaNumerosNoIntervalo(int[] numeros, int limiteInferior, int limiteSuperior) {
  213. int []numerosDentro=new int[retorneQuantosNoIntervalo(numeros,limiteInferior,limiteSuperior)];
  214. int contadorCopia=0;
  215. for(int i=0;i<numeros.length;i++)
  216. if (numeros[i]>=limiteInferior&&limiteSuperior>=numeros[i]){
  217. numerosDentro[contadorCopia]=numeros[i];
  218. contadorCopia++;
  219. }
  220. return numerosDentro;
  221. }
  222.  
  223. /**
  224. * Une dois arrays. Exemplo: se os arrays forem [5,2] e [9,1,2] então o método retorna [5,2,9,1,2].
  225. *
  226. * @param a1 O primeiro array.
  227. * @param a2 O segundo array.
  228. * @return Retorna um array contendo os números dos arrays a1 e a2.
  229. */
  230. public int[] unaArrays(int[] a1, int[] a2) {
  231. int []uniaoDosArrays=new int[a1.length+a2.length];
  232. for(int i=0;i<a1.length;i++)
  233. uniaoDosArrays[i]=a1[i];
  234. for(int i=a1.length;i<a1.length+a2.length;i++)
  235. uniaoDosArrays[i]=a2[i-a1.length];
  236. return uniaoDosArrays ;
  237. }
  238.  
  239. /**
  240. * Obtém os números pares contidos no array.
  241. *
  242. * @param numeros Os números.
  243. * @return Retorna os números pares existentes no array numeros.
  244. */
  245. public int[] obtenhaPares(int[] numeros) {
  246. int quantidadeDePares = 0;
  247. for(int i=0;i<numeros.length;i++)
  248. if (numeros[i]%2 == 0)
  249. quantidadeDePares++;
  250. int[]numerosPares=new int[quantidadeDePares];
  251. for(int i=0,contador=0;i<numeros.length;i++)
  252. if ((numeros[i]==0)||(numeros[i]%2 == 0)){
  253. numerosPares[contador]= numeros[i];
  254. contador++;
  255. }
  256. return numerosPares;
  257. }
  258.  
  259. /**
  260. * Obtém um array contendo duas ocorrências de cada número. Exemplo: se o array for formado pelos
  261. * números [7,2,6] então o método retorna o array [7,7,2,2,6,6].
  262. *
  263. * @param numeros Os números.
  264. * @return Retorna o array contendo duas ocorrências de cada número existente em numeros.
  265. */
  266. public int[] dupliqueArray(int[] numeros) {
  267. int []duplicado=new int[numeros.length*2];
  268. for(int i=0, o=0;i<duplicado.length;i=i+2){
  269. duplicado[i]=numeros[o];
  270. o++;
  271. }
  272. for(int i=1, o=0;i<duplicado.length;i=i+2){
  273. duplicado[i]=numeros[o];
  274. o++;
  275. }
  276. return duplicado ;
  277. }
  278.  
  279. /**
  280. * Verifica se o array possui pelo menos um número par.
  281. *
  282. * @param numeros Os números.
  283. * @return Retorna true se o array possui pelo menos um número par ou false caso contrário.
  284. */
  285. public boolean possuiNumeroPar(int[] numeros) {
  286. boolean temPar = false;
  287. for(int i=0;(i<numeros.length&&temPar==false);i++)
  288. if (numeros[i]==0||(numeros[i]%2 == 0))
  289. temPar=true;
  290. return temPar;
  291. }
  292.  
  293. /**
  294. * Obtém a posição da primeira ocorrência de um número dentro de um array. Se o número não estiver no
  295. * array então o método retorna a posição -1. Exemplo: se o array for [7,3,2,3,8] e o número for 3 então
  296. * o método retorna 1. Se o número for 4 então o método retorna -1.
  297. *
  298. * @param numeros Os números.
  299. * @param n Um número.
  300. * @return Retorna a posição da primeira ocorrência do número n no array numeros.
  301. */
  302. public int obtenhaPrimeiraPosicaoDeNumero(int[] numeros, int n) {
  303. int posicao = -1;
  304. for(int i=0;(posicao==-1&&i<numeros.length);i++)
  305. if (numeros[i]==n)
  306. posicao=i;
  307. return posicao;
  308. }
  309.  
  310. /**
  311. * Obtém as posições em que um número aparece dentro de um array. Exemplo: para o array [9,12,6,9] o número 9 aparece nas posições 0 e 3.
  312. *
  313. * @param numeros Os números.
  314. * @param n O número.
  315. * @return As posições de n no array numeros.
  316. */
  317. public int[] obtenhaPosicoesDeNumero(int[] numeros, int n) {
  318. int []posicoes=new int[retorneQuantosNoIntervalo(numeros,n,n)];
  319. for(int i=0,contador=0;i<numeros.length;i++)
  320. if (numeros[i]==n){
  321. posicoes[contador]= i;
  322. contador++;
  323. }
  324. return posicoes;
  325.  
  326. }
  327.  
  328. /**
  329. * Verifica se o array não possui números repetidos.
  330. *
  331. * @param numeros Os números.
  332. * @return Retorna true se o array numeros não possui números repetidos ou false caso contrário.
  333. */
  334. public boolean semRepeticoes(int[] numeros) {
  335. boolean naoRepete = true;
  336. for(int i=0;i<numeros.length;i++){
  337. int teste= numeros[i];
  338. for(int o=i+1;o<numeros.length;o++)
  339. if (teste==numeros[o])
  340. naoRepete = false;
  341. }
  342. return naoRepete;
  343. }
  344.  
  345. /**
  346. * Obtém um array sem ocorrências de um determinado número. Exemplo: se o array for [8,2,3,2] e o número for 2 então retorna [8,3].
  347. *
  348. * @param numeros Os números.
  349. * @param n Um número.
  350. * @return Retorna um array onde n foi removido do array numeros.
  351. */
  352. public int[] obtenhaSemOcorrencias(int[] numeros, int n) {
  353. int []semOcorrencias = new int[numeros.length-conteQuantasOcorrencias(numeros,n)];
  354. for( int i=0,contador=0;i<numeros.length;i++)
  355. if (numeros[i]!=n){
  356. semOcorrencias[contador]=numeros[i];
  357. contador++;
  358. }
  359. return semOcorrencias;
  360. }
  361.  
  362. /**
  363. * Substitui todas as ocorrências de um número por outro número.
  364. *
  365. * @param numeros Os números.
  366. * @param numero O número a ser substituído.
  367. * @param substituto O número que ficará no lugar do numero.
  368. */
  369. public void substituaTodasOcorrencias(int[] numeros, int numero, int substituto) {
  370. int []substituido = numeros;
  371. for( int i=0;i<numeros.length;i++)
  372. if (numeros[i]==numero)
  373. substituido[i]=substituto;
  374. }
  375.  
  376. /**
  377. * Substitui a primeira ocorrência de um número por outro número.
  378. *
  379. * @param numeros Os números.
  380. * @param numero O número a ser substituído.
  381. * @param substituto O número que ficará no lugar do numero.
  382. */
  383. public void substituaPrimeiraOcorrencia(int[] numeros, int numero, int substituto) {
  384. int []substituido = numeros;
  385. boolean foiSubstituido = false;
  386. for( int i=0;i<numeros.length&&foiSubstituido==false;i++)
  387. if (numeros[i]==numero){
  388. substituido[i]=substituto;
  389. foiSubstituido = true;
  390. }
  391. }
  392.  
  393. /**
  394. * Substitui a última ocorrência de um número por outro número.
  395. *
  396. * @param numeros Os números.
  397. * @param numero O número a ser substituído.
  398. * @param substituto O número que ficará no lugar do numero.
  399. */
  400. public void substituaUltimaOcorrencia(int[] numeros, int numero, int substituto) {
  401. int []substituido = numeros;
  402. boolean foiSubstituido = false;
  403. for( int i=numeros.length-1;i>-1&&foiSubstituido==false;i--){
  404. if (numeros[i]==numero){
  405. substituido[i]=substituto;
  406. foiSubstituido=true;
  407. }
  408. }
  409. }
  410.  
  411. /**
  412. * Obtém o array invertido. Exemplo: se o array for {7,4,5,1} então o array invertido é {1,5,4,7}
  413. *
  414. * @param numeros Os números.
  415. * @return Retorna um novo array numeros invertido.
  416. */
  417. public int[] inverta(int[] numeros) {
  418. int []copiaInvertida=new int[numeros.length];
  419. for (int i=0;i<numeros.length;i++)
  420. copiaInvertida[numeros.length-1-i]= numeros[i];
  421. return copiaInvertida;
  422. }
  423.  
  424. /**
  425. * Calcula a soma dos números em posições pares e dos números em posições ímpares.
  426. * Considera que o array sempre tem pelo menos dois numeros.
  427. *
  428. * @param numeros Os números.
  429. * @return Retorna array de tamanho 2 onde o primeiro número é a soma dos números em posições pares e o segundo número é a soma dos números em posições ímpares.
  430. */
  431. public int[] retorneSomaPosicoesParesPosicoesImpares(int[] numeros) {
  432. int somaDosImpares = calculeSoma(encontreEmPosicoesImpares(numeros));
  433. int somaDosPares = calculeSoma(numeros)-somaDosImpares;
  434. return new int[] {somaDosPares,somaDosImpares};
  435. }
  436.  
  437. /**
  438. * Obtém os números que estão em algumas posições. Considera que as posiçoes sempre
  439. * sao validas.
  440. *
  441. * @param numeros Os números.
  442. * @param posicoes As posições.
  443. * @return Retorna os números que estão nas posições indicadas em posicoes.
  444. */
  445. public int[] obtenhaDasPosicoes(int[] numeros, int[] posicoes) {
  446. int []nasPosicoes=new int[posicoes.length];
  447. for(int i=0;i<posicoes.length;i++)
  448. nasPosicoes[i]=numeros[posicoes[i]];
  449. return nasPosicoes;
  450. }
  451.  
  452. /**
  453. * Obtém uma parte de um array. Deve-se indicar a quantidade de números desejados e a posição onde a cópia deve iniciar.
  454. * Se a posição for maior ou igual ao tamanho do array então retorna um array vazio. Se a quantidade de números desejada
  455. * for maior que a quantidade de números existentes então retorna os números possíveis. Exemplo: considere o array {6,3,4,1,2}.
  456. * Se a quantidade for 2 e a posição for 1 então retorna {3,4}. Se a quantidade for 3 e a posição for 4 então retorna {2}.
  457. *
  458. * @param numeros Os números.
  459. * @param qtd A quantidade de números desejados.
  460. * @param pos A posição inicial da parte a ser copiada.
  461. * @return Retorna a parte do array copiada.
  462. */
  463. public int[] obtenhaParte(int[] numeros, int qtd, int pos) {
  464. int tamanho =0;
  465. int posicaoInicial=pos;
  466. int posicaoNaParte=0;
  467.  
  468. if (pos<numeros.length){
  469. tamanho = qtd;
  470. }
  471. if (qtd>numeros.length-pos){
  472. tamanho = numeros.length-pos;
  473. }
  474. int[]parte=new int[tamanho];
  475. while(posicaoNaParte<parte.length){
  476. parte[posicaoNaParte]= numeros[posicaoInicial];
  477. posicaoInicial++;
  478. posicaoNaParte++;
  479. }
  480. return parte;
  481. }
  482. }
Add Comment
Please, Sign In to add comment