Alumno Carn G.T G.L Aguilar Quintanilla, Cristian Antonio AQ13003 02 04 Hidalgo Fuentes, Cesar Rolando HF13003 02 04 Jimnez Alas, Daniel Vladimir JA13001 02 04
Ciudad Universitaria, 18 de Junio de 2014
INTRODUCCIN.
Esta asignacin tiene como propsito apoyarse en lo que son las estructuras y los arreglos para poder solucionar de una forma ms practica los problemas comunes en el rea laboral que lleva relacin a la programacin, ya sea que casos aplicados a la realidad como cualquier problema de programacin que se ver prximamente en el prximo curso de programacin, llevndonos esto como ultima herramienta fundamental para la solucin de problemas.
Se estudiara lo que son estructuras y funciones para iniciar este trabajo primero se definirn lo que son las estructuras, ya que con ellas se logra integrar muchas caractersticas en un solo tipo nuevo de datos. Al terminar de comprender y utilizar las estructuras comenzaremos con el aprendizaje de las funciones para lograr un cdigo modular y reutilizable.
Conoceremos un poco ms acerca de estos dos temas para poder realizar un cdigo que sea fcil de corregir y de depurar.
La asignacin se resolver aplicando los conocimientos que hayamos obtenido durante nuestra investigacin y horas clases.
OBJETIVOS.
Objetivo general:
Desarrollar cdigos sencillos y reutilizables con estructuras y funciones.
Objetivos especficos:
1. Implementar punteros a las estructuras y funciones. 2. Conocer cmo es que trabajan las funciones. 3. Utilizar estructuras y funciones para la creacin de arreglos unidimensionales y pluridimensionales.
ESTRUCTURAS.
Qu es una estructura?
Una estructura es un tipo de dato definido por el usuario, al utilizar una estructura Usted tiene la habilidad para definir un nuevo tipo de dato considerablemente ms complejo que los tipos que hemos utilizado hasta ahora. Una estructura es una combinacin de varios tipos de datos previamente definidos, incluyendo otras estructuras que hayamos definido previamente. Una definicin simple es, "una estructura es un grupo de datos relacionados en una forma conveniente al programador y/o al usuario del programa"
Para definir una estructura usamos el siguiente formato:
1. struct nombre_de_la_estructura { 2. campos de estructura; 3. }; Ahora que ya conocemos como definir empezamos con la creacin. Ejemplo:
Ahora ya tenemos definida la estructura, pero aun no podemos usarla. Necesitamos declarar una variable con esa estructura. 1. struct estructura_amigo amigo;
De todo esto depende que nuestro cdigo se realice de la mejor manera y sea sencillo y fcil de corregir.
Inicializar una estructura.
A las estructuras se les pueden dar valores iniciales de manera anloga a como hacamos con los arreglos. Primero tenemos que definir la estructura y luego cuando declaramos una variable como estructura le damos el valor inicial que queramos.
Cmo se hace esto? Siguiendo nuestro ejemplo vamos a crear un arreglo de ELEMENTOS elementos:
1. struct estructura_amigo amigo[ELEMENTOS]; Ahora necesitamos saber cmo acceder a cada elemento del arreglo. La variable definida es amigo, por lo tanto para acceder al primer elemento usaremos amigo[0] y a su miembro nombre: amigo[0].nombre. Vemoslo en un ejemplo en el que se supone que tenemos que meter los datos de tres amigos:
Tambin se puede apuntar a una estructura, primero de todo hay que definir la estructura de igual forma que hacamos antes. La diferencia est en que al declara la variable de tipo estructura debemos ponerle el operador '*' para indicarle que es un puntero.
Dado que es un puntero tenemos que indicarle dnde debe apuntar, en este caso vamos a hacer que apunte a la variable amigo: 1. p_amigo = &amigo; p_amigo es un puntero que apunta a la estructura amigo. Sin embargo p_amigo>edad es una variable de tipo int. Por eso al usar el scanf tenemos que poner el &. typedef.
Con typedef podemos crear nombres para los tipos de datos ya existentes, ya sea por capricho o para mejorar la legibilidad o la portabilidad del programa.
Definicion de datos con typedef.
typedef tipo_de_variable nombre_nuevo;
Punteros .
Tambin podemos definir tipos de punteros: 1. int *p, *q; Podemos convertirlo en: 1. typedef int *ENTERO; 2. ENTERO p, q; Aqu p, q son punteros aunque no lleven el operador '*', puesto que ya lo lleva ENTERO incorporado.
Arreglos Tambin podemos declarar tipos arreglo. Esto puede resultar ms cmodo para la gente que viene de BASIC o PASCAL, que estaban acostumbrados al tipo string en vez de char: 1. typedef char STRING[255]; 2. STRING nombre; donde nombre es realmente char nombre[255]; 3. Estructuras Tambin podemos definir tipos de estructuras. Antes, sin typedef: Sin typedef: 1. struct _complejo { 2. double real; 3. double imaginario; 4. } 5. struct _complejo numero; Con typedef: 1. typedef struct { 2. double real; 3. double imaginario; 4. } COMPLEJO; 5. COMPLEJO numero;
FUNCIONES
Una funcin es un conjunto de declaraciones, definiciones, expresiones y sentencias que realizan una tarea especfica. La utilizacin de funciones nos permite dividir un programa extenso en pequeos segmentos que realizan tareas concretas. Probablemente, dentro de un mismo programa se realicen las mismas tareas varias veces, lo que se facilita mediante la utilizacin de funciones. Sin embargo, es probable que ciertas funciones no sean reutilizables, pero al usarlas se mejora la legibilidad del programa. Con el propsito de permitir un manejo eficiente de los datos, las funciones en C no se pueden anidar. En otras palabras, una funcin no se puede declarar dentro de otra funcin, por lo que todas las funciones son globales o externas, lo que hace que puedan llamarse desde cualquier parte de un programa. Cuando se accede a una funcin desde un determinado punto del programa, se le puede pasar informacin mediante unos identificadores especiales conocidos como argumentos (tambin denominados parmetros). Una vez que la funcin procesa esta informacin, devuelve un valor mediante la instruccin return.
La estructura general de una funcin en C es la siguiente: tipo_de_retorno nombre_de_la_funcin (lista_de_parmetros) { cuerpo_de_la_funcin return expresin }
Donde: tipo_de_retorno: es el tipo del valor devuelto por la funcin, o, en caso de que la funcin no devuelva valor alguno, la palabra reservada void . nombre_de_la_funcin: es el nombre o identificador asignado a la funcin. lista_de_parmetros: es la lista de declaracin de los parmetros que son pasados a la funcin. stos se separan por comas. Debemos tener en cuenta que pueden existir funciones que no utilicen parmetros. cuerpo_de_la_funcin: est compuesto por un conjunto de sentencias que llevan a cabo la tarea especfica para la cual ha sido creada la funcin. return expresin: mediante la palabra reservada return , se devuelve el valor de la funcin, en este caso representado por expresin.
Declaracin de funciones Antes de empezar a utilizar una funcin debemos declararla. La declaracin de una fun- cin se conoce tambin como prototipo de la funcin. En el prototipo de una funcin se tienen que especificar los parmetros de la funcin, as como el tipo de dato que devuelve. Los prototipos de las funciones que se utilizan en un programa se incluyen generalmente en la cabecera del programa y presentan la siguiente sintaxis: tipo_de_retorno nombre_de_la_funcin(lista_de_parmetros);
Los prototipos de las funciones son utilizados por el compilador para verificar que se accede a la funcin de la manera adecuada con respecto al nmero y tipo de parmetros, y al tipo de valor de retorno de la misma.
Definicin de funciones.
Tras declarar una funcin, el siguiente paso es implementarla. Generalmente, este paso se conoce como definicin. Es precisamente en la definicin de una funcin donde se especifican las instrucciones que forman parte de la misma y que se utilizan para llevar a cabo la tarea especfica de la funcin. La definicin de una funcin consta de dos partes, el encabezado y el cuerpo de la funcin.
La sintaxis de la definicin de una funcin es la siguiente:
El tipo_de_retorno representa el tipo de dato del valor que devuelve la funcin. Este tipo debe ser uno de los tipos simples de C, un puntero a un tipo de C o bien un tipo struct . De forma predeterminada, se considera que toda funcin devuelve un tipo entero (int) . En otras palabras, si en la declaracin o en la definicin de una funcin no se especifica el tipo_de_retorno , el compilador asume que devuelve un valor de tipo int .
El nombre_de_la_funcin representa el nombre que se le asigna a la funcin.
Devolucin de valores .
Una funcin en C slo puede devolver un valor. Para devolver dicho valor, se utiliza la palabra reservada return cuya sintaxis es la siguiente: return <expresin>; Donde <expresi n> puede ser cualquier tipo de dato salvo un array o una funcin. Ada- ms, el valor de la expresin debe coincidir con el tipo de dato declarado en el proto- tipo de la funcin. Por otro lado, existe la posibilidad de devolver mltiples valores mediante la utilizacin de punteros o estructuras.
Funciones void Las funciones void dan una forma de emular, lo que en otros lenguajes se conocen como procedimientos (por ejemplo, en PASCAL). Se usan cuando no requiere regresar un valor. Se muestra un ejemplo que imprime los cuadrados de ciertos nmeros. 1. void cuadrados(){ 2. int contador; 3. for( contador=1; contador<10; contador++) 4. printf("%d\n",contador*contador); 5. } 6. void main( void ) 7. { 8. cuadrados(); 9. } En la funcin cuadrados no esta definido ningn parmetro, y por otra parte tampoco se emplea la sentencia return para regresar de la funcin.
El tipo de dato devuelto por estas funciones puede ser void , considerado como un tipo especial de dato. En estos casos, la sentencia return se puede escribir como return o se puede omitir directamente. Por ejemplo: void imprime_cabecera(); { printf("esta funcin slo imprime esta lnea"); return; } equivale a: void imprime_cabecera(); { printf("esta funcin slo imprime esta lnea"); }
Acceso a una funcin .
Para que una funcin realice la tarea para la cual fue creada, debemos acceder o llamar a la misma. Cuando se llama a una funcin dentro de una expresin, el control del programa se pasa a sta y slo regresa a la siguiente expresin de la que ha realizado la llamada cuando encuentra una instruccin return o, en su defecto, la llave de cierre al final de la funcin. Generalmente, se suele llamar a las funciones desde la funcin main , lo que no implica que dentro de una funcin se pueda acceder a otra funcin. Cuando queremos acceder a una funcin, debemos hacerlo mediante su nombre seguido de la lista de argumentos que utiliza dicha funcin encerrados entre parntesis.
mbito y clases de almacenamiento . Como hemos visto en unidades anteriores, en C, las variables se pueden clasificar de acuerdo a su tipo de dato. Por ejemplo, una variable puede ser de tipo entero (int) o de tipo carcter (char) . Sin embargo, las variables tambin pueden clasificarse de acuerdo a su mbito, es decir, la parte del programa en la que la variable es reconocida. De acuerdo con su mbito, las variables pueden ser locales o globales
Variables locales Cuando declaramos variables dentro de la funcin principal del programa, es decir, dentro de la funcin main , estn nicamente asociadas a esta funcin, en otras palabras, son variables locales de la funcin main y no se puede acceder a ellas a travs de ninguna otra funcin. Al igual que sucede con las variables declaradas dentro de la funcin main , cualquier variable que declaremos dentro de una funcin, es local a esa funcin, es decir, su mbito esta confinado a dicha funcin.
Variables globales.
A diferencia de las variables locales cuyo mbito estaba confinado a la funcin donde estaban declaradas, el mbito de las variables globales se extiende desde el punto en el que se definen hasta el final del programa. En otras palabras, si definimos una variable al principio del programa, cualquier funcin que forme parte de ste podr utilizarla simplemente haciendo uso de su nombre. La utilizacin de variables globales proporciona un mecanismo de intercambio de informacin entre funciones sin necesidad de utilizar argumentos. Por otra parte, las variables globales mantienen el valor que se les ha asignado dentro de su mbito, incluso despus de finalizar las funciones que modifican dicho valor.
Variables estticas.
Otro tipo de almacenamiento son las variables estticas identificadas por la palabra reservada static . Las variables estticas pueden ser tanto locales como globales. Una variable esttica local, al igual que una variable automtica, est nicamente asociada a la funcin en la que se declara con la salvedad de que su existencia es permanente.
Variables de registro Cuando declaramos una variable como variable de registro, le estamos diciendo al compilador que queremos que la variable se almacene en un lugar de rpido acceso, generalmente en los registros de la unidad central de procesamiento del ordenador. Para declarar una variable como variable de registro, debemos colocar la palabra reservada register antes de la declaracin de la variable. Veamos algunos ejemplos: register int contador: register char a; Slo se pueden declarar variables como register si son variables automticas (locales) o argumentos formales de una funcin.
Funciones y arreglos.
Cuando se usan un arreglo como un argumento a la funcin, se pasa slo la direccin del arreglo y no la copia del arreglo entero. Para fines prcticos podemos considerar el nombre del arreglo sin ningn ndice como la direccin del arreglo. Considerar el siguiente ejemplo en donde se pasa un arreglo a la funcin imp_rev, observar que no es necesario especificar la dimensin del arreglo cuando es un parmetro de la funcin. 1. void imp_rev(char s[]) 2. { 3. int t; 4. for( t=strlen(s)1; t>=0; t) 5. printf("%c",s[t]); 6. } 7.void main( void ) 8. { 9. char nombre[]="Facultad"; 10. imp_rev(nombre); 11. }
Manejo de la memoria de forma DINAMICA en ANSI C .
La memoria dinmica en C es creada a travs de funciones definidas en la librera estndar de C, estas funciones son malloc, calloc, realloc y free. void *malloc(size_t size); Esta funcin sirve para asignar memoria de forma dinmica. Asigna tantos bytes como se indica el parmetro size. funciiona de la forma siguiente: int *i; i = (int *)malloc(sizeof(int));
El operador (int *) sirve para hacer la conversin de puntero genrico a puntero entero, ya que la funcion retorna un puntero void Si la asignacin no se ha podido realizar, devuelve el valor nulo. void *calloc(size_t nmemb, size_t size);
Esta funcin funciona de modo similar a malloc, pero est hecha para asignar espacio a matrices, nmemb indica el nmero de elementos que sta tendr, y size el tamao de cada elemento. void *realloc(void *ptr, size_t size); Esta funcin redimensiona el espacio asignado de forma dinmica anteriormente a un puntero. Si el puntero tiene el valor nulo sta acta como malloc. Si la reasignacin no se pudo hacer con xito, devuelve un puntero nulo, dejando intacto el puntero que se pasa por parmetro. void free(void *ptr);
ASIGNACIN
1. Hacer funciones que puedan realizar las siguientes operaciones con matrices: 1. Suma, 2. Resta, 3. Multiplicacin, 4. Multiplicacin por un escalar 5.Clculo de transpuesta, 6. Clculo de matriz inversa.
#include <stdio.h> #include <stdlib.h> #include <math.h> int n1, m1, n2, m2,n,m; float M1[50][50],M2[50][50],M[50][50]; void introMAX1(void); void introMAX2(void); void resta(void); void suma(void); void multiMAX(void); void multiplicar(float); void imprimir(void); void transpuesta(void); void inversa(void); int main() { int a, k, j, i; float e; printf("\nOPERACIONES CON MATRICES: \n\n"); printf("1. Sumar \n"); printf("2. Restar \n"); printf("3. Multiplicar \n"); printf("4. Multiplicar por escalar\n"); printf("5. Calculo de transpuesta\n"); printf("6. Calculo de matriz inversa\n"); printf("\nQUE OPERACION DESEA REALIZAR : "); do{ scanf("%i",&a); }while(!((a>=1)&&(a<=6))); switch(a){ case 1: introMAX1(); introMAX2(); suma(); imprimir(); break; case 2: introMAX1(); introMAX2(); resta(); imprimir(); break; case 3: introMAX1(); introMAX2(); multiMAX(); imprimir(); break; case 4: introMAX1(); printf("\nIntroduzca un escalar : "); scanf("%f",&e); multiplicar(e); imprimir(); break; case 5: transpuesta(); imprimir(); break; case 6: inversa(); imprimir(); break; } return 0; } //declaracion de funciones //funcion para introducir los valores de la matriz global m1 void introMAX1() { int i, j; printf("\nDigite la dimension que desea para la matriz A: \n"); printf("\nIntroduzca filas : "); scanf("%i",&n1); printf("Introduzca columnas : "); scanf("%i",&m1); printf("\nDigite los valores que desea de la matriz B: \n\n"); for(i = 0;i<n1;i++) { for(j=0; j<m1;j++) { printf(" A[%i][%i] = ",i,j); scanf("%f", &M1[i][j]); } printf("\n"); } } //funcion para introducir los valores de la matriz global m1 void introMAX2() { int i, j; printf("\nintroduzca las dimenciones\n"); printf("\nfilas : "); scanf("%i",&n2); printf("columnas : "); scanf("%i",&m2); printf("\nintroduzca los valores de la matriz\n\n"); for(i = 0;i<n2;i++) { for(j=0; j<m2;j++) { printf(" B[%i][%i] = ",i,j); scanf("%f", &M2[i][j]); } printf("\n"); } } //esta funcion imprime la matriz m void imprimir() { int i, j; printf("\n\n"); for(i = 0;i<n;i++) { printf("| "); for(j=0; j<m;j++) { printf("%0.4f ", M[i][j]); } printf(" |\n"); } } // void suma() { int i, j; if(!((n1==n2)&&(m1==m2))) printf("\n\nLas dimensiones de las matrices deben de ser iguales\n\n"); else { n=n1;m=m1; for(i = 0;i<n1;i++) { for(j=0; j<m1;j++) { M[i][j] = M1[i][j] + M2[i][j]; } } } } void resta() { int i, j; if(!((n1==n2)&&(m1==m2))) printf("\n\nLas dimensiones de las matrices deben de ser iguales\n\n"); else { n=n1;m=m1; for(i = 0;i<n;i++) { for(j=0; j<m;j++) { M[i][j] = M1[i][j] - M2[i][j]; } } } } void multiMAX() { int i,j,k; if(m1!=n2) printf("\nLas dimensiones de las matrices deben de ser iguales\n"); else { n = n1; m = m2; for(i = 0;i<n;i++) for(j=0; j<m;j++) M[i][j] = 0.0; for(i=0;i<n1;i++) for(j=0;j<m2;j++) for(k=0;k<m1;k++) { M[i][j] += M1[i][k]*M2[k][j]; } } } void multiplicar(float E) { int i,j; n = n1; m = m1; for(i = 0;i<n;i++) for(j=0; j<m;j++) M[i][j] = M1[i][j]*E; } void transpuesta() { printf("Numeros a utiizar para hacer la transpuesta: \n 1,9,-3,3 \n 80,29,-12,0 \n 34,21,16,-1 \n 2,1,15,- 13 \n"); int matriz[4][4]={ {1,9,-3,3}, {80,29,-12,0}, {34,21,16,-1}, {2,1,15,-13} }; int f=0,c=0,aux=0; for(f=0;f<4;f++) { printf("\n"); for(c=0;c<4;c++) { printf("[%d][%d] ",f,c); printf("%d\t",matriz[f][c]);} } for(f=0;f<4;f++){ for(c=f+1;c<4;c++) { aux=matriz[f][c]; matriz[f][c]=matriz[c][f]; matriz[c][f]=aux; } printf("\n"); for(f=0;f<4;f++) { printf("\n"); for(c=0;c<4;c++) { printf("[%d][%d] ",f,c); printf("%d\t",matriz[f][c]); } } }
printf("\n"); } void inversa() { int i, j, k, l, fila, cola, filb, colb; printf("\nLas dimensiones de las matrices A y B deben de ser iguales\n"); printf ("\n\nDigite el numero de filas de A : "); scanf ("%d",&fila); printf ("\nDigite el numero de columnas de A: "); scanf ("%d",&cola); printf ("\nDigite el numero de filas de B : "); scanf ("%d",&filb); printf ("\nDigite el numero de columnas de B : "); scanf ("%d",&colb); puts ("\n"); if (cola==filb) { float A[fila][cola], B[filb][colb], C[fila][colb], p; for (i=0;i<fila;i++) { for (j=0;j<cola;j++){ printf ("\nDigite un numero A[%d][%d]=",i,j); scanf ("%f",&A[i][j]); } } for (i=0;i<filb;i++) { for (j=0;j<colb;j++){ printf ("\nDigite un numero B[%d][%d]=",i,j); scanf ("%f",&B[i][j]); } } for (i=0;i<fila;i++) { for (j=0;j<colb;j++){ for (k=0;k<cola;k++){ C[i][j]+=A[i][k]*B[k][j]; } } }printf ("\nEl resultado de la multiplicacion de las matrices A y B es:\n"); for (i=0;i<fila;i++) { for (j=0;j<colb;j++){ printf ("\t\t%.3f",C[i][j]); } puts ("\n"); } if (fila==colb){ printf ("\nLa matriz inversa de A y B es:\n"); for (k=0;k<fila;k++){ p=1/C[k][k]; for (i=0;i<fila;i++){ if (i!=k){ for (j=0;j<colb;j++){ if (j!=k){ C[i][j]-=(C[i][k]*C[k][j]*p); } } } } for (l=0;l<colb;l++){ C[k][l]*=p; } for (l=0;l<=fila;l++){ C[l][k]=(p*C[l][k]*(-1)); } C[k][k]=p; }for (i=0;i<fila;i++){ for (j=0;j<colb;j++) printf ("\t\t%.3f",C[i][j]); puts ("\n"); } } else{ printf ("La matriz no posee inversa"); } } else { printf ("\nLas matrices no se pueden multiplicar\n\n"); } }
2. Hacer una funcin que calcule el factorial de un nmero.
# #include <stdio.h>
double fact(int);
int main() { int n=1,i; double producto;
printf("\nIntroducir un numero entero:"); scanf("%d",&n); for (i=2; i<=n; i++) producto=fact(n); printf("El factorial es=%0.0f\n",producto); return 0; }
double fact(int z) {
if(z>1) return z*fact(z-1); else return 1; }
3. Hacer una funcin que calcule la raz cuadrada utilizando el mtodo de Newton.
#include <stdio.h> #include <math.h> #define OK 0 #define ERR 1 #define PREC 0.000001 #define TOL 1.0e-15
/* Escriban un programa que calcule la raz cuadrada de un nmero usando el mtodo de Newton de aproximacin por intervalos. Para el clculo de la raz cuadrada de 25 el programa toma como intervalo inicial: [0, 25]. 1.Calcula el punto medio del intervalo [0, 25]: 12.5. Como 12.5 > 25, toma como nuevo intervalo: [0, 12.5] 2.Calcula el punto medio del intervalo [0, 12.5]: 6.25. Como 6.25 > 25, toma como nuevo intervalo: [0, 6.25] 3.Calcula el punto medio de [0, 6.25]: 3.125. Como 3.125 < 25, toma como nuevo intervalo: [3.125, 6.25] 4.... Finalmente, el bucle termina cuando el valor absoluto de la diferencia entre el nmero y el punto medio al cuadrado es menor que una cierta constante, y escribe 4.9999... como solucin. */
int main() { printf("Introduzca un numero real:\t"); scanf("%lf",&numero); printf("La raiz cuadrada de %g es %.6f\n", numero,newtonRaiz(0,numero)); return OK; }
double newtonRaiz(double xinf, double xsup){
int iteraciones = 0; const int MAXITER = 100; /* Ambito reducido a esta funcion */
if(iteraciones == MAXITER) fprintf(stderr,"Newton ha alcanzado el maximo numero de iteraciones %d", MAXITER); return 0.5*(xinf+xsup); }
double auxRaiz(double x){ return x*x-numero; }
4. Hacer una Base de Datos para una empresa de 100 empleados, donde estn categorizados por: nombre completo, ISSS, NIT, DUI, NUP, nmero de empleado (cdigo: 00xx es jefe, 01xx es ordenanza, 02xx es operario, 03xx vigilante, 04xx cocinero) y salario dependiendo el cdigo. Los datos se deben de mantener en un archivo binario, y al momento de cargar el programa, se debe de crear la estructura respectiva, claro se debe usar memoria dinmica para agregar empleados o despedir. Tambin se debe de tener un MENU, que despliegue en pantalla: Introducir empleado, borrar empleado, mostrar datos de empleado (Cdigo, Nombre completo, nmero de ISSS, nmero de NUP, nmero de DUI, calculo de salario con el detalle de descuentos), mostrar todos.
}; int main() { int n,a,b,c,d,e,f,g; printf("\n Aqui se encuentras los datos de los 100 empleados que conforman la empresa\n"); printf("\n\t Cathy\n"); printf("Si desea conocer los datos de algunos de ellos le presentamos las siguientes \nopciones: \n"); printf("1.Agregar empleado. \n"); printf("2.Eliminar al empleado. \n"); printf("3.Mostrar los datos de el empleado. \n"); printf("Escoga una opcion: \n"); do{ scanf("%i",&n); }while(!((n>=1)&&(n<=3))); switch(n){ case 1: agregar(); break; case 2: eliminar();
break; case 3: mostrar(); break;
} return 0; } void agregar() { int b,c,d,e,f,g; printf("Digite los datos. \n"); printf("Nombre completo: \n"); scanf("%d",&b); printf("ISS: \n"); scanf("%d", &c); printf("NIT: \n"); scanf("%d",&d); printf("DUI: \n"); scanf("%d", &e); printf("Numero de empleado: \n"); scanf("%d",&f); printf("Salario dependiendo del cdigo: \n"); scanf("%d",&g);
} void eliminar() { int n; printf("Digite el numero de el empleado que desea eliminar: \n"); scanf("%d", &n); }
void mostrar() { int n; printf("Digite el numero de l empleado del cual desea conocer los datos: \n"); scanf("%d", &n); }
CONCLUSION
Las estructuras y arreglos, se da como conclusin que realmente funcionan de una forma muy practica para la solucin de problemas sencillos y de forma ms prctica, incluso en aplicaciones en lo que es respecto a las funciones para simplemente hacer una llamada y lograr un mejor servicio para el usuario haciendo un uso ms eficiente de las herramientas a utilizar.
Este ltimo laboratorio se aprendi a utilizar las estructuras y las funciones de una manera rpida haciendo todo el trabajo ms fcil con lo cual se resolvi la asignacin correspondiente. Se conoce ahora un poco ms de las ventajas que ofrece el lenguaje de programacin en C y como explotarlo para nuestro beneficio.