PI-ITBA / 2024_02

Consultas 2C 2024
4 stars 0 forks source link

Ej 2 Recu 2024 1C #54

Open JeroDiLeo opened 1 month ago

JeroDiLeo commented 1 month ago

Hola que tal buenas tardes, queria saber si estaba bien mi resolucion. Intenté crear un assert con la consigna pero no lo pasaba.

int asignaRampas(unsigned int dim, unsigned int rampas[],int aerolinea,int cant){

    int i;
    int rampasAsignadas=0;
    int libres=eliminaCeros(rampas,dim);
    for(i=libres;i<dim && rampasAsignadas<cant;i++){
        rampas[i]=aerolinea;
        rampasAsignadas++;
    }
    while(i<dim){
        rampas[i++]=0;
    }
    return rampasAsignadas;
}

int eliminaCeros(unsigned int vec[],unsigned int dim){
    int k=0;
    for(int i=0;i<dim;i++){
        if(vec[i]!=0){
            vec[k++]=vec[i];
        }
    }
    return k;
}
marcelogarberoglio commented 1 month ago

Debería pasar como mínimo este test parcial para que esté bien

int main(void) {
  int v[] = {0, 44, 44, 0, 0, 0, 1};
  int n = asignaRampas(v, 7, 56, 2); // 2 rampas libres para la 56
  // n vale 2
  // v = { 44, 44, 1, 56, 56, 0, 0};
  assert(n==2);
  assert(v[0]==44 && v[1]==44 && v[2]==1);

  n = asignaRampas(v, 7, 1, 3}; // 3 rampas más para la 1
  // n vale 2 (no hay 3 libres)
  // v = { 44, 44, 1, 56, 1, 1}; 
  assert(n==3);
  assert(v[0]==44 && v[1]==44 && v[2]==1 && v[4]==56);

  n = asignaRampas(v, 7, 88, 3}; 
  // n vale 0
  // v no cambia
  assert(n==0);
  assert(v[0]==44 && v[1]==44 && v[2]==1 && v[4]==56);

}
JeroDiLeo commented 1 month ago

Perfecto ahi lo probe y lo corrió bien(Modifique el caso dos que n deberia ser 2). A nivel de recorridos utilizados es eficiente?

marcelogarberoglio commented 1 month ago

Está muy bien