Está en la página 1de 11

Ejercicios de Arreglos y

Funciones
“En C”
Semestre de Otoño 2006

Claudio Gutiérrez-Soto
Destrezas Esperadas

 Utilizar algunas funciones incorporadas en


C, para el manejo de cadenas
Funciones para cadenas
 strcpy(str2,str1): Copia str1 en str2
 strcmp(str1,str2): Compara dos cadenas
str1 y str2. Si str1=str2 entonces retorna 0.
 strlen(str1): devuelve un entero que va a
ser el largo de srt1.
 strcat(str1,str2): concatena el string str2 al
final del string str1.
Ejercicios 1
 Dado dos vectores. Dichos vectores
corresponden a los elementos de
conjuntos. Cree una función que calcule
A-B (Operación de conjuntos). Es decir,
todos los elementos que están en A, pero
que no están en B.
Solución 1
int *RestaConjuntos(int A[],int B[],int CantA,int CantB)
{
int i,encontrado,k,Resta[MAX];

for(i=0,k=0; i<CantM;i++)
{ for(j=0,encontrado=0;j<CantB && !encontrado;j++)
if(A[i]==B[j])
encontrado=1;
else continue;

if(encontrado==0)
{ Resta[k]=A[i];
k++;
}
else continue;
}
return(Resta);
}
Ejercicio 2
 Suponga que tiene una base de datos representada a
través de arreglos en C. En dicha base de datos se tiene
información de los empleados de una empresa. Nota los
arreglos ya contienen información. La cantidad de
empleados es menor o igual a MAXART, si es menor,
entonces los disponibles tienen el carácter nulo en
nombre y apellido :
#define MAXART 500
#define largo 30
Ejercicio 2
#define MAXART 500
#define largo 30

main()
{
char nombre[MAXART][largo];
char apellido[MAXART][largo];
int edad[MAXART];
int sueldobase[MAXART];
:
/* note que las declaraciones anteriores son locales*/
 Cree una función que imprima la información de todos los
empleados que ganan más de $250.000.-
Ejercicio 2
 Cree una función genérica que permita incrementar el
sueldo de un empleado. Para ello tome en cuenta que
entre los parámetros a ingresar a la función están, el
nombre, el apellido y el porcentaje a incrementar. El
nombre y el apellido son string sin tamaño definido.
 Suponga que el procedimiento para eliminar un
empleado es: Se encuentra el empleado, se corren
todos los demás a la celda anterior, finalmente se
coloca un vacío o nulo al final.
Solución 2

void Imprimir(char nombre[][largo],char apellido[][largo],int edad[],int sueldobase[])


{ int i;
for(i=0;i<MAXART;i++)
if(sueldobase[i]>=250000)
printf(“Nombre:%s, Apellido:%s, edad:%d, SueldoBase:
%d\n”,nombre[i],apellido[i],edad[i],
sueldobase[i]);
else continue;
}
Solución 2
void AumentarSueldo(char nombre[],char apellido[],int porcentaje)
{ int i;

for(i=0;i<MAXART;i++)
if(!srtcmp(nombre,nombre[i]) && !srtcmp(apellido,apellido[i]))
{ valor=sueldobase[i]*porcentaje;
sueldobase[i]=sueldobase[i]+valor;
}
else continue;

}
Solución 2
void Eliminar(char NB[],char AB[],char nombre[][largo],char apellido[]
[largo],int edad[], int sueldobase[])
{ int i,j,stop=1;
for(i=0;i<=MAXART && srtlen(nombre[i])!=0;i++)
if(!strcmp(nombre,nombre[i]) && !strcmp(apellido,apellido[i]) && stop)
{ j=i; stop=0; }
else if(!stop)
for(;j<=MAXART && strlen(nombre[j])!=0;j++,i++)
{ strcpy(nombre[j],nombre[i]);
strcpy(apellido[j],apellido[i]);
edad[j]=edad[i];
sueldobase[j]=sueldobase[i]; }
else continue;
}

También podría gustarte