Objetivo do codigo
Um vetor v1 com N valores inteiros dara origem ao v2 da seguinte maneira. O vetor v1 deve receber apenas valores 0s e 1s.
a) o 1º elemento do v2 é o numero de algarismos 0s encontrados no v1 apartir do seu inicio até o 1º valor 1 encontrado.
b) o 2º elemento do v2 é o nuumero de algarismos 1s encontrados no v1 apos o ultimo 0, até o proximo 0
c) o 3º elementodo v2 é o numero de algarismos 0s encontrados no v1 apartir do ultimo 1 encontrado ate o proximo 1.
d) repetir os passos b e c até o fim do v1.
Ex: v1[0 0 0 1 1 0 1 0 1 1 0] obtem-se v2[3 2 1 1 1 2 1]
Inicio
package Questão_02;
import javax.swing.JOptionPane;
public class Exe02 {
public static void main(String[] args) {
// Declaração dee variáveis, constantes e vetores;
int auxV2 = 0;
int qtdZero = 0, qtdZero2 = 0, qtdUm = 0;
int posicao = 0;
final int VETOR_LENGHT = Integer.parseInt(JOptionPane.showInputDialog(
"Tamanho do vetor: "));
int v1[] = new int[VETOR_LENGHT];
int v2[] = new int[VETOR_LENGHT];
// Entrada de DADOS (com numeros randomicos);
for (int i = 0 ; i < VETOR_LENGHT ; i++) {
v1[i] = (int) (Math.random() * 2) ;
}
// ### Processamento de dados ###
// A) o primeiro elemento do vetor V2 é o numero de algarismos zero que o vetor v1 tem a partir
// do seu inicio até o primeiro algarismo 1;
for (int i = posicao ; i < VETOR_LENGHT ; i++) {
if (i < 1) {
if (v1[i] == 0)
qtdZero++;
}
else {
if (v1[i] == 0) {
qtdZero++;
}
if (v1[i] == 1) {
posicao = i; // Posição do primeiro UM apos o inicio do vetor;
break;
}
}
}
v2[auxV2] = qtdZero;
auxV2++;
// B) o proximo elemento do vetor v2 é o numero de algarismos 1 que o vetor v1 contem a partir do
// ultimo zero encontrado até o proximo algarismo zero;
for ( int i = 0 ; i < VETOR_LENGHT ; i++) { // Posição do ultimo zero encontrado;
if (v1[i] == 0) {
if (v1[i+1] == 1) {
posicao = i + 1; // (Posição do ultimo ZERO) + 1;
break;
}
}
}
for (int i = posicao; i < VETOR_LENGHT ; i++) {
if (v1[i] == 1) {
qtdUm++;
posicao = i; // Posição do ultimo UM;
} else {
break;
}
}
v2[auxV2] = qtdUm;
auxV2++;
// C) o proximo elemento do vetor v2 é o numero de algarismos zero que o vetor v1 contem
// a partir do ultimo 1 encontrado, até o proximo algarismo 1;
for (int i = posicao + 1; i < VETOR_LENGHT ; i++) {
if (v1[i] == 1) {
posicao = i;
break;
}
else
qtdZero2++;
}
if (auxV2 < 10) {
v2[auxV2] = qtdZero2;
auxV2++;
}
// Saída de dados;
for (int i = 0 ; i < VETOR_LENGHT; i++) {
System.out.print(v1[i]+"\t");
}
System.out.println("\n");
for (int i = 0; i < auxV2 ; i++) {
System.out.print(v2[i]+"\t ");
}
System.out.println("posicao: "+posicao);
}
}
FIM
###MINHA DUVIDA OU PROBLEMA OU QUEBRA-CABEÇA ###
So não sei como repetir os passos B) e C) com comandos de repetição como o ‘while’. Já que os passos a) e b) estão ok. Por mais que o codigo esteja GIGANTE!
Obrigado a quem deu atenção ao topico e possa abrir a minha cabeça para isso!!
Como faço para usar os passos b e c com comandos de repetição? oO
Abraço, mt PAZ