C/Visual C - Operaciones con tablas

 
Vista:

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Operaciones con tablas

Publicado por Rodrigo (119 intervenciones) el 04/12/2019 05:39:15
Cuando borras tienes que decrementar tabCustomer->nCustomers tambien y no lo haces.
Como no explicas que es lo que falla o como te das cuenta de lo que falla, supondre que esto es lo unico que necesitas cambiar para que todo funcione.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Operaciones con tablas

Publicado por David (6 intervenciones) el 05/12/2019 12:33:56
Gracias Rodrigo, ya lo solucioné. El algoritmo tenía que cumplir también otras condiciones.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar