A situação é a seguinte estou tentando pegar um vetor e substituir os valores negativos por 0 e deixar nas ultimas posições.
porem não consigo colocar os números 0 ao final do vetor;;;
sempre que tenho uma solução ele estoura meu array.
Exemplo:
Entrada: [1 -2 3 4 -5 6 7 8 9 10]
Saída: [1 3 4 6 7 8 9 10 0 0]
import javax.swing.JOptionPane;
public class Ex3 {
public static void main(String[] args) {
int vetor[] = {1,-2,3,4,-5,6,7,8,9,10};
int vetorMod [] = new int [10];
for(int i=0;i<vetor.length;i++){
if(vetor[i]<0){
vetorMod[i] = 0;
}
if(vetor[i]>0){
vetorMod[i] = vetor[i];
//System.out.print(vetorMod[i]+" ");
}
}
for(int i = 0 ;i<10;i++){
if(vetorMod[i]==0){
//vetorMod[i] = vetorMod[i-1];
}
System.out.print(vetorMod[i]+" ");
}
}
}
desde já obrigado.
Creio que isso resolva. Tah meio complicado, mas acho que da pra voce entender.
[code]public class Ex3 {
public static void main(String[] args) {
int vetor[] = {-1,-2,3,4,-5,6,7,8,9,-10};
int vetorMod [] = new int [10];
int vetorOrd [] = new int [10];
int i, j=0, numZeros=0;
for(i=0; i<vetor.length; i++) {
if(vetor[i]<0){
vetorMod[i] = 0;
}
else {
vetorMod[i] = vetor[i];
}
}
System.out.print("Vetor Mod: ");
for(i=0; i<vetorMod.length; i++) {
System.out.print(vetorMod[i]+" ");
}
System.out.println();
for(i=0; i<vetorMod.length; i++) {
if(vetorMod[i] == 0)
numZeros++;
}
System.out.println("Numero de zeros: "+numZeros);
for(i=0; i<vetorMod.length; i++) {
if(vetorMod[i] != 0){
vetorOrd[j] = vetorMod[i];
j++;
}
}
for(i=j; i<vetorMod.length; i++) {
vetorOrd[i] = 0;
}
System.out.print("Vetor Ordenado: ");
for(i=0; i<vetorOrd.length; i++) {
System.out.print(vetorOrd[i]+" ");
}
}
} [/code]
Cara esta também é uma solução só que com menos código.
por default o array tem seus elementos com valores padrões ,
então basta somente adicionar os valores positivos no vectoMod que os elementos não atribuído terão seus valores default
no caso de int será o valor zero vejo o código abaixo.
public class Ex3 {
public static void main(String[] args) {
int vetor[] = {1,-2,3,4,-5,6,7,8,9,10};
int vetorMod [] = new int [10];
for(int i=0, e = 0;i<vetor.length;i++){
if(vetor[i]>0){
vetorMod[e] = vetor[i];
e++;
}
}
for(int i = 0 ;i<10;i++){
System.out.print(vetorMod[i]+" ");
}
}
}
Existem vários tipos de algoritmos no google para ordenação, é bom dar uma olhada
pois quando a gente precisa fazer isso, já está lá prontinho para ser usado.
Ao contrário perde-se muito tempo reinventando a roda.
Abraço.