/vetores.java Secret
Created
April 5, 2017 11:13
Star
You must be signed in to star a gist
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
class Main { | |
public static void imprimeVetor(int [] v) { | |
for(int i=0; i<v.length-1; i++){ | |
System.out.print(v[i] + ", "); | |
} | |
System.out.println(v[v.length-1]); | |
} | |
public static int somatoria(int [] v) { | |
int soma = 0; | |
for(int i=0; i<v.length; i++){ | |
soma += v[i]; | |
} | |
return soma; | |
} | |
public static int produtoria(int [] v) { | |
int prod = 1; | |
for(int i=0; i<v.length; i++){ | |
prod *= v[i]; | |
} | |
return prod; | |
} | |
public static int [] alteraVetor(int [] v) { | |
int [] u = new int [v.length]; | |
for(int i=0; i<v.length; i++){ | |
u[i] = v[i] + i*i; | |
} | |
return u; | |
} | |
public static int [] produtoElemento(int [] v, int [] u) { | |
int [] w = new int [v.length]; | |
if (v.length==u.length){ | |
for(int i=0; i<v.length; i++){ | |
w[i] = v[i]*u[i]; | |
} | |
} | |
return w; | |
} | |
public static int produtoInterno(int [] v, int [] u) { | |
return somatoria(produtoElemento(v, u)); | |
} | |
public static int [] insertSort(int [] v) { | |
for(int i=1; i<v.length; i++) { | |
int j = i; | |
while (j>0 && v[j-1] > v[j]) { | |
int temp = v[j]; | |
v[j] = v[j-1]; | |
v[j-1] = temp; | |
j = j - 1; | |
} | |
} | |
return v; | |
} | |
public static int buscaBinaria(int [] v, int x) { | |
int esq = 0, dir = v.length-1; | |
int m; | |
while (esq <= dir) { | |
m = (int) Math.floor( (esq+dir)/2.0 ); | |
if (v[m] < x) esq = m+1; | |
else if (v[m] > x) dir = m-1; | |
else return m; | |
} | |
return -1; | |
} | |
public static int [] inverteVetor(int [] v) { | |
int [] u = new int[v.length]; | |
for(int i=0;i<v.length;i++) { | |
u[i] = v[v.length - 1 - i]; | |
} | |
return u; | |
} | |
public static int [] vetorBinario(int x) { | |
int nbits =(int) (Math.log(x)/Math.log(2) + 1.0); | |
int [] bin = new int [nbits]; | |
int i = 0; | |
while (x>0) { | |
bin[i] = x%2; | |
x = x/2; | |
i++; | |
} | |
return inverteVetor(bin); | |
} | |
public static void imprimeIndices(int [] b){ | |
for(int i=0;i<b.length-1;i++) { | |
if (b[i]>0) System.out.print(i+","); | |
} | |
if (b[b.length-1]>0) System.out.print((b.length-1)+","); | |
} | |
/* eu errei no enunciado, esse algoritmo nao imprime na ordem crescente */ | |
public static void imprimeConjuntos(int m, int n) { | |
int qtde = (int)Math.pow(2, n); | |
for(int i=1;i<qtde;i++){ | |
int [] bits = vetorBinario(i); | |
if (somatoria(bits) == m) { | |
imprimeIndices(inverteVetor(bits)); | |
System.out.println(""); | |
} | |
} | |
} | |
public static void main(String[] args) { | |
int [] v = {1, 4, 3, 5, 2, 7, 6}; | |
imprimeVetor(v); | |
System.out.println(somatoria(v)); | |
System.out.println(produtoria(v)); | |
int [] u = alteraVetor(v); | |
imprimeVetor(u); | |
imprimeVetor(produtoElemento(v, u)); | |
System.out.println(produtoInterno(v,u)); | |
int [] sv = insertSort(v); | |
imprimeVetor(v); | |
System.out.println(buscaBinaria(v,3)); | |
System.out.println(buscaBinaria(v,10)); | |
imprimeVetor(inverteVetor(sv)); | |
imprimeVetor(vetorBinario(10)); | |
imprimeConjuntos(3,5); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment