Ejercicios de Arreglos y Funciones En C Semestre

  • Slides: 11
Download presentation
Ejercicios de Arreglos y Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto

Ejercicios de Arreglos y Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto

Destrezas Esperadas n Utilizar algunas funciones incorporadas en C, para el manejo de cadenas

Destrezas Esperadas n Utilizar algunas funciones incorporadas en C, para el manejo de cadenas

Funciones para cadenas strcpy(str 2, str 1): Copia str 1 en str 2 n

Funciones para cadenas strcpy(str 2, str 1): Copia str 1 en str 2 n strcmp(str 1, str 2): Compara dos cadenas str 1 y str 2. Si str 1=str 2 entonces retorna 0. n strlen(str 1): devuelve un entero que va a ser el largo de srt 1. n strcat(str 1, str 2): concatena el string str 2 al final del string str 1. n

Ejercicios 1 n Dado dos vectores. Dichos vectores corresponden a los elementos de conjuntos.

Ejercicios 1 n 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 Observe que esta función retorna un vector, aquí el antes del nombre

Solución 1 Observe que esta función retorna un vector, aquí el antes del nombre de la función se utilizar el símbolo *, el cual se denomina puntero. int *Resta. Conjuntos(int A[], int B[], int Cant. A, int Cant. B) { int i, encontrado, k, Resta[MAX]; for(i=0, k=0; i<Cant. M; i++) { for(j=0, encontrado=0; j<Cant. B && !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 n Suponga que tiene una base de datos representada a través de

Ejercicio 2 n 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. Note que 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];

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*/ n Cree una función que imprima la información de todos los empleados que ganan más de $250. 000. -

Ejercicio 2 n n n Cree una función que imprima la información de todos

Ejercicio 2 n n n Cree una función que imprima la información de todos los empleados que ganan más de $250. 000. 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;

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, Sueldo. Base: %dn”, nombre[i ], apellido[i], edad[i], sueldobase[i]); else continue; }

Solución 2 void Aumentar. Sueldo(char nombre[], char apellido[], int porcentaje) { int i; for(i=0;

Solución 2 void Aumentar. Sueldo(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

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; }