[RESOLVIDO] Ajuda com logica

Estou fazendo um exercicio e estou com muita dificuldade. Já é a segunda semana que estou tentando e não consigo achar a logica do negocio. Aqui vai:

  • Faça um algoritmo em java para preencher dois vetores A e B
  • com as posições de inteiro. Após, gere um vetor C com os va-
  • lores de A e B, sendo que o vetor deve ficar ordenado. OBS:
  • Não pode ordenar o vetor C, tem que jogar os valores nele ja
  • ordenados.
    */

nessa parte que travei.

[code]for (int i = 0; i < c.length; i++) {

		for (int j = 0; j < a.length - 1; j++) {

			if (a[j] < a[j + 1]) {
				if (a[j]< menorA) {
					menorA = a[j];
					
				}
				
			} else  {
				if ( a[j+1] < menorA) {
					menorA = a[j+1];
				}
			}

		}


[/code]

A segunda vez que ele passa pela segunda estrutura for, ele sempre vai pegar o menor numero. Eu queria uma ajuda para saber como ignorar na segunda instancia do for o menor numero.
Por exemplo:
O array a tem os valores 1, 2 e 3, respectivamente. nesse codigo eu só vou pegar o 1. queria saber como pegar o 2 na segunda vez que entra nesse for.

Desculpa a minha ignorancia, não sou fera em logica.Se alguem puder me ajudar eu fico muito grato.

Só uma pergunta: O vetor C terá que ter todos os inteiros de A e todos os inteiros de B ?

Ou seja, se A tem 5 posições e B 3 posições, C terá que ter 8 posições ?

Abraço!

Sim. Mas estou tomando em consideração que os dois vetores A e B são do mesmo tamanho.

o que não muda muita coisa, o que não estou sabendo fazer é eliminar o menor numero na segunda vez que repete a estrutura for e ir eliminando os menores ja pegos conforme repete este segundo for. Se alguem puder ajudar…

você poderia usar o último valor salvo em “c” que é o “último menor” para fazer outra comparação.
algo como

[code]if(i != 0) {
if(a[j] > c[i - 1])
// continua
if (a[j] < a[j + 1]) {
if (a[j]< menorA) {
menorA = a[j];

      }  
                  
  }[/code]

isso supondo que não tenha valores iguais, se tiver valores iguais você poderia por exemplo remover o valor do vetor, ou colocar um valor inválido caso não possa negativos por exemplo.
Em pior caso você poderia também criar um vetor como “salvosA” e “salvosB” contendo as posições que já foram lidas para “c” e checar se o novo “menor valor” não está em uma dessas casas.

Putz cara, agora eu visualizei, brigadao.

eu ja tinha pensado nessas duas primeiras linhas, mas nao cheguei a associar as duas juntas. Obrigado pela luz.

if(a[j] > c[i - 1]) // essa aqui eu achava que ia dar problema, mas como a linha anterior é diferente de zero nao da bug.

vlw, obrigado. :smiley:

Resolvi o problema. Vou postar aqui caso tenha alguem que tambem esta tentando fazer ou queira aproveitar a logica para alguma coisa.

/* Faça um algoritmo em java para preencher dois vetores A e B
 * com as posições de inteiro. Após, gere um vetor C com os va-
 * lores de A e B, sendo que o vetor deve ficar ordenado. OBS:
 * Não pode ordenar o vetor C, tem que jogar os valores nele ja
 * ordenados.
 */

import javax.swing.*;

public class Exercicio01 {

	private static int menorB = 2147483647;

	private static int menorA = 2147483647;

	public static void main(String args[]) {

		int n = Integer.parseInt(JOptionPane
				.showInputDialog("Quantidade do vetor A"));
		int a[] = new int[n];
		for (int i = 0; i < a.length; i++) {
			a[i] = Integer.parseInt(JOptionPane
					.showInputDialog("Vetor A: Posição " + (i + 1)));
		}

		int o = Integer.parseInt(JOptionPane
				.showInputDialog("Quantidade do vetor B"));
		int b[] = new int[o];
		for (int i = 0; i < b.length; i++) {
			b[i] = Integer.parseInt(JOptionPane
					.showInputDialog("Vetor B: Posição " + (i + 1)));
		}

		int c[] = new int[n + o];

		String saida = "";
		for (int i = 0; i < c.length; i++) {

			if (a.length > 1) {
				for (int j = 0; j < a.length; j++) {
					if (j != a.length - 1) {
						if (i != 0) {
							if (a[j] > c[i - 1]) {

								if (a[j] < a[j + 1]) {
									if (a[j] < menorA) {
										menorA = a[j];

									}

								} else {
									if (a[j + 1] < menorA
											&& a[j + 1] > c[i - 1]) {
										menorA = a[j + 1];
									} else {
										if (a[j] < menorA)
											menorA = a[j];
									}
								}
							} 

						} else {

							if (a[j] < a[j + 1]) {
								if (a[j] < menorA) {
									menorA = a[j];

								}

							} else {
								if (a[j] < menorA) {

									menorA = a[j];
								}
							}

						}
					} else {
						if (i != 0) {
							if (a[j] > c[i - 1]) {

								if (a[j] < a[j - 1]) {
									if (a[j] < menorA) {
										menorA = a[j];
									}
								} else {
									if (a[j - 1] < menorA
											&& a[j - 1] > c[i - 1]) {
										menorA = a[j - 1];
									} else {
										if (a[j] < menorA) {
											menorA = a[j];
										}
									}
								}
							}

						} else { 

							if (a[j] > a[j - 1]) {
								if (a[j] < menorA) {
									menorA = a[j];

								}

							} else {
								if (a[j] < menorA) {
									menorA = a[j];
								}
							}

						}
					}
				}
			} else {
				if (i == 0) {
					menorA = a[0];
				}
			}
			if (b.length > 1) {
				for (int j = 0; j < b.length; j++) {

					if (j != b.length - 1) {
						if (i != 0) {
							if (b[j] > c[i - 1]) {

								if (b[j] < b[j + 1]) {
									if (b[j] < menorB) {
										menorB = b[j];

									}

								} else {
									if (b[j + 1] < menorB
											&& b[j + 1] > c[i - 1]) {
										menorB = b[j + 1];
									} else {
										if (b[j] < menorB)
											menorB = b[j];
									}
								}
							}

						} else {

							if (b[j] < b[j + 1]) {
								if (b[j] < menorB) {
									menorB = b[j];
								}
							} else {
								if (b[j + 1] < menorB) {
									menorB = b[j + 1];
								}
							}
						}
					} else {
						if (i != 0) {
							if (b[j] > c[i - 1]) {
								if (b[j] > b[j - 1]) {
									if (b[j] < menorB) {
										menorB = b[j];
									}
								} else {
									if (b[j - 1] < menorB) {
										menorB = b[j - 1];
									}
								}
							}
						} else { // começa

							if (b[j] > b[j - 1]) {
								if (b[j] < menorB) {
									menorB = b[j];

								}

							} else {
								if (b[j - 1] < menorB) {
									menorB = b[j - 1];
								}
							}

						}
					}

				}
			} else {
				if (i == 0) {

					menorB = b[0];
				}
			}

			if (a.length > 1 && b.length > 1) {
				if (menorA < menorB) {

					c[i] = menorA;
					menorA = 2147483647;
				} else {
					c[i] = menorB;
					menorB = 2147483647;
				}
			} else if (a.length > 1) {
				if (i == 0) {
					if (menorA < menorB) {
						c[i] = menorA;
						menorA = 2147483647;
					} else {
						c[i] = menorB;
						menorB = 2147483647;
					}
				} else {
					if (menorA < menorB) {
						c[i] = menorA;
						menorA = 2147483647;
					} else {
						c[i] = menorB;
						menorB = 2147483647;

					}
				}

			} else if (b.length > 1) {
				if (i == 0) {
					if (menorA < menorB) {
						c[i] = menorA;
						menorA = 2147483647;
					} else {
						c[i] = menorB;
						menorB = 2147483647;
					}
				} else {
					if (menorA < menorB) {
						c[i] = menorA;
						menorA = 2147483647;
					} else {
						c[i] = menorB;
						menorB = 2147483647;
					}
				}

			} else {
				if (i == 0) {
					if (menorA < menorB) {
						c[i] = menorA;
						c[i + 1] = menorB;
					} else {
						c[i] = menorB;
						c[i + 1] = menorA;
					}
				}
			}
			saida += c[i] + " ";
			

		}
		JOptionPane.showMessageDialog(null, saida);

	}
}

Vlw pela ajuda novamente.

Tente usar mais de um método p/ resolver o problema, Blackbeard, facilitaria em muito a lógica do teu programa.