Operaciones con tablas
Publicado por David (6 intervenciones) el 02/12/2019 09:13:35
Buenos días,
estoy aprendiendo a programar en C. Tengo el siguiente problema. Tengo que crear una acción donde, dada una tabla de clientes y un cliente dado, borre de esta tabla el cliente que se ha pasado por parámetro.
Hay que tener en cuenta que el borrado del cliente no debe dejar ninguna posición inválida en la tabla, por lo que habrá que ocupar el espacio liberado por el cliente borrado, desplazando una posición atrás todos los clientes que hay después del cliente borrado.
Para solucionar el problema, hay que utilizar la función customerTable_find, para localizar el índice del cliente a borrar.
Lo que tengo hecho es lo siguiente, pero no calcula bien:
La función customerTable_find es la siguiente:
¿Alguien podría ayudarme, por favor?
Un saludo y gracias por adelantado.
estoy aprendiendo a programar en C. Tengo el siguiente problema. Tengo que crear una acción donde, dada una tabla de clientes y un cliente dado, borre de esta tabla el cliente que se ha pasado por parámetro.
Hay que tener en cuenta que el borrado del cliente no debe dejar ninguna posición inválida en la tabla, por lo que habrá que ocupar el espacio liberado por el cliente borrado, desplazando una posición atrás todos los clientes que hay después del cliente borrado.
Para solucionar el problema, hay que utilizar la función customerTable_find, para localizar el índice del cliente a borrar.
Lo que tengo hecho es lo siguiente, pero no calcula bien:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void customerTable_del(tCustomerTable *tabCustomer, tCustomer customer)
{
int index;
int i;
index = 0;
index = customerTable_find(*tabCustomer, customer.id);
for (i = index; i < tabCustomer->nCustomers; i++) {
tabCustomer->table[i] = tabCustomer->table[i+1];
}
}
La función customerTable_find es la siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int customerTable_find(tCustomerTable tabCustomer, tCustomerId id) {
int idx = NO_CUSTOMER;
int i=0;
while(i< tabCustomer.nCustomers && idx==NO_CUSTOMER) {
/* Check if the id is the same */
if(tabCustomer.table[i].id==id) {
idx = i;
}
i++;
}
return idx;
}
¿Alguien podría ayudarme, por favor?
Un saludo y gracias por adelantado.
Valora esta pregunta


0