Closed pedrogonzaleznunez closed 3 months ago
si paso el primer if, este if se ejecuta siempre
if(dimOrig >= 1)
resultado[0] = original[0];
dimRes++;
podrias sacar el condicional.
En cuanto a tu pregunta, si arrancas i en 0 y dimRes en 0, el for ya te va a poner el primer elemento, porque no va a entrar en el loop de j, pq con j = 0, y dimRes = 0, no se cumple j < dimRes (0<0)
Genial quedó muy claro.
Tal como decis vos, al tener el if(!flag)
el primer elemento se agrega solo, no lo habia contemplado.
Por otro lado, cambie el return al final con operador condicional.
int
eliminaRepetidos( const int original[], int dimOrig, int resultado[]){
unsigned int dimRes = 0;
int flag;
// if(dimOrig >= 1)
// resultado[0] = original[0];
// dimRes++;
//por cada elemento, que esta en el vector 'original', recorro el vector 'resultado' para ver si estaba
for(int i = 0; i < dimOrig ; i++){
flag = 0;
for(int j = 0; j < dimRes && !flag; j++){
//Si encuentro el numero, en resultado[], no lo agrego
if(original[i] == resultado[j])
flag = 1;
}
//Si el flag sigue en cero, no encontre el numero
if(!flag){
resultado[dimRes] = original[i];
dimRes++;
}
}
return (dimOrig <= 0 ? 0 : dimRes );
}
Se podría modularizar, haciendo una función que busque un elemento en un vector, para no tener el for adentro del for ¿Es necesario el condicional? Si no entra al ciclo porque dimOrig es <=0, dimRes queda en cero.
Buen dia! Queria saber si el ejercicio estaba bien resuelto, no encontré la soluciones en el campus como para comparar con eso. Tengo una pregunta: ¿Hay alguna forma de hacerlo sin agregarle el primer elemento de
original[]
al vectorresultado[]
?Buen finde, saludos!