C/Funcións para traballar con estruturas
Aparencia
< C
C | ||
Funcións para traballar con estruturas |
Buscar por nome
[editar]A seguinte función permite buscar unha estrutura cun campo cunha matriz de caracteres (cadea de caracteres) co texto especificado na chamada.
// Imaxinemos que previamente se declara un tipo de estrutura que contén unha matriz de caracteres
// chamada "nome", e que na chamada á función se lle fornecen a primeira cela dunha matriz do
// tipo de dita estrutura (ficha), a extensión de dita matriz de estruturas e mais a cadea de texto
// a buscar.
signed short int BuscarEstrutura(struct ficha *matriz, unsigned short int extension, char *nome)
{
// Declaración de variables
unsigned short int i; // Índice, do mesmo tipo que "extension" por eficiencia.
for(i=0;i<extension;i++)
if(strcmp(matriz[i].nome,nome)==0) return i; // Se atopa unha coincidencia, devolve a súa posición
return -1; // En caso de que non atopase nada, devolve -1
}
Ordenar alfabeticamente
[editar]A seguinte función permite ordenar alfabéticamente os elementos dunha matriz de estruturas segundo unha das variables da estruturas, que sirva para almacenar unha cadea de caracteres (unha matriz).
// Imaxinemos que antes desta función se declarou unha estrutura que ten unha
// cadea de caracteres, "nome"
void OrdenarAlfabeticamente(struct ficha *matriz, unsigned short int extension)
{
// Declaración de variables
unsigned short int minimo,i,l; // Índices, do mesmo tipo que "extensión" por eficiencia.
struct ficha auxiliar;
for(i=0;i<extension-1;i++)
{
// Establécese inicialmente o primeiro nome sen ordenar coma o primeiro (alfabeticamente).
minimo=i;
// Búscase cal é realmente o primeiro nome alfabeticamente.
for(l=i+1;l<extension;l++)
{
if(strcmp(matriz[minimo].nome,matriz[l].nome)<0) minimo=l;
}
// Intercámbianse os valores da cela actual da matriz
// e da cela coa cadea de texto que vai antes alfabeticamente.
// Faise mesmo no caso de que a cela actual da matriz
// sexa a mesma que a primeira alfabéticamente.
auxiliar=matriz[i];
matriz[i]=matriz[minimo];
matriz[minimo]=auxiliar;
}
}
Cómpre boterlle unha ollada á páxina sobre a función strcmp
, pois hai que comprender o seu funcionamento, e mailas súas limitacións. Por exemplo, salienta o feito de que só funciona para ordenar cadeas de caracteres anglosaxóns, é dicir, nada de ñ ou tiles.
C | ||
Funcións para traballar con estruturas |