Faça um programa que peça ao usuário para digitar um número inteiro, inserindo-o
em um array. Os elementos deste array já se encontram ordenados, em ordem
crescente, por isso a inserção do número deve manter a ordenação do array. Ao final
de cada inserção, o programa exibe o conteúdo do array para mostrar que o mesmo
continua ordenado. O programa deve pedir um novo número para usuário até o array
não apresentar mais espaço.
e aí Samilu… no começo esses exercicios são f**a né?
mas é pra desenvolver o raciocínio lógico…
gostei do desafio e fiquei uma caaaaaaaaaara tentando…
mas como acabaram os cigarros, e já são 3:15… e daqui 3 horas e meia preciso ir pro trabalho (+ java!), parei por aqui…
eu ACHO que só falta conseguir aumentar o lenght da array[] no for…
e apagar algumas coisinhas…
alguém ajuda???
BORA VAI!!!
[code]/*
InsereArray.java
Created on 16 de Maio de 2006, 01:09
To change this template, choose Tools | Template Manager
and open the template in the editor.
*/
package Guj;
import java.util.Scanner;
/**
*
@author xp
*/
public class InsereArray {
public static void main(String[] args) {
int array[] = {3, 6, 7, 12, 13, 80, 98,};
int array2[] = new int[array.length + 1];
int numeroInserido;
int temp;
int temp2;
int temp3;
// exibe os valores originais do array
for (int a=0; a < array.length; a++) {
System.out.print( array[ a ]);
System.out.println();
}
Scanner input = new Scanner( System.in );
System.out.println("Digite um numero inteiro:");
numeroInserido = input.nextInt(); // atribui numero digitado para numeroInserido
for (int counter = 0; counter < array.length; counter++) {
System.out.println("contagem for maior 1 " + "array[" + counter + " ] = " + array[counter]);
temp = array[counter]; // atribui temp a array[ valor do contador que é incrementado no loop]
// se numeroInserido(==1) < array[0](==3) -> array[0] == 1, array[2] == 3, array[3] == 4. array[4] == 7...
if (numeroInserido > array[counter] && numeroInserido < array[counter+1]) {
for(int i=1; i < array.length; i++) {
System.out.println("Contagem for interno do array[" + counter + "] = " + array[counter]);
System.out.println("do array2[" + i + "] =" + array2[ i ] + "valor de i = [i]");
System.out.println();
temp2 = array[counter + 1];
array2[i] = array[counter + 1];
array[counter+1] = numeroInserido;
array[counter+1+i] = temp2;
System.out.println("Após troca de valores:");
System.out.println("array[" + (counter + 2) + "] =" + array[counter + 2]);
System.out.println("e array2[" + i + "] =" + array2[ i ] + " (i = [i] valor tem q ser igual acima");
continue;
}
}
} // fim do maior for
for (int b = 0; b < array.length; b++){
System.out.print( array[b] );
System.out.println();
}
} // fim do main
}[/code]
EXEC:
3
6
7
12
13
80
98
Digite um numero inteiro:
10
contagem for maior 1 array[0 ] = 3
contagem for maior 1 array[1 ] = 6
contagem for maior 1 array[2 ] = 7
Contagem for interno do array[2] = 7
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 7
do array2[1] =0valor de i = [i]
at Guj.InsereArray.main(InsereArray.java:56)
Após troca de valores:
array[4] =12
e array2[1] =12 (i = [i] valor tem q ser igual acima
Contagem for interno do array[2] = 7
do array2[2] =0valor de i = [i]
Após troca de valores:
array[4] =12
e array2[2] =10 (i = [i] valor tem q ser igual acima
Contagem for interno do array[2] = 7
do array2[3] =0valor de i = [i]
Após troca de valores:
array[4] =12
e array2[3] =10 (i = [i] valor tem q ser igual acima
Contagem for interno do array[2] = 7
do array2[4] =0valor de i = [i]