Boa noite, faz alguns anos que parei de programar e agora estou precisando voltar, gostaria de ajuda com o seguinte exercicio:
Para um vetor A de N inteiros, retorne o menor valor positivo que não aparece em A;
Exemplo: A[1,3,6,4,1,2] o exercício retorna 5.
Fiz o seguinte codigo:
<CODE>
#include <iostream>
using namespace std;
void bubble(int vec[], int n)
{
int troca, i, j, aux;
for (i = n-1; i > 0; i--) {
troca = 0;
for (j =0 ; j < i; j++) {
if (vec[j] > vec[j+1]) {
aux = vec[j]; vec[j] = vec[j+1]; vec[j+1] = aux;
troca = 1;
}
}
if (!troca) return;
}
}
int main (){
int N;
cin>>N;
int A[N];
for (int i = 0; i < N; i++){
cin>>A[i];
}
bubble(A,N);
int j=-1,f=1;
do{
j++;
if((A[j]+1 != A[j+1]) && (A[j] != A[j+1])){ f = 1;
}
}while( f == 0);
cout<<A[j]+1;
}
<CODE>
A ideia foi ordenar o vetor e ver qual o menor valor que estava faltando.
Claramente não deu certo, poderiam me ajudar a descobrir o motivo ?
Obrigado!
OBS: No enunciado original é pedido algumas validações na entrada de dados, deixei de fora porque estou tentando entender a logica