Biblioteca Estándar del C



5591810-774065-856134-757905UNIVERSIDAD TECNOL?GICA DE PANAM?FACULTAD DE INGENIER?A DE SISTEMAS COMPUTACIONALESPROGRAMACION APLICADA I BIBLIOTECA EST?NDAR DEL CPROF. Dra. ADDYS DE LAMINTEGRANTESACEVEDO, LAUREN8-845-560MARTINEZ, MAURICIO8-841-472PAU, RICARDORODRIGUEZ, DAN8-845-1130VIVAR, LUIS E.8-857-210GRUPO: 1-IL-12220 DE ABRIL DE 2011 ?ndiceIntroducción y objetivos……………………………………… 3La biblioteca estándar del C……………………………….. 4La librería Stdio.h……………………………………………… 8La librería Conio.h……………………………………………. 14La librería Ctype.h……………………………………………. 16La librería Stdlib.h…………………………………………… 21La librería String.h…………………………………………. 26La librería Time.h………………………………………….. 30La librería Math.h…………………………………………. 41Programa Ejemplo …………………………………………. 43Conclusiones………………………………………………… 46Bibliografía y Web-grafía………………………………….. 47IntroducciónEn el mundo actual, las tecnologías avanzan de forma impresionante a cada segundo, y nosotros somos los que vamos a seguir con este avance. Empezando el curso de nuestras vidas y fundando las bases de nuestra información en el tema de la programación así como la lógica que utilizaremos en trabajos futuros tendemos el gusto de presentarles la presente investigación sobre La Biblioteca Estándar del C, la cual pasaremos a definir posteriormente. Este proyecto no solo presenta aspectos del tema sino que también, profundiza en sus subdivisiones y métodos que están poseen, dando así explicaciones, trucos y ejemplos de los métodos propuestos. ObjetivosEntre los objetivos tenemos: Conocer que es la biblioteca estándar de CDeterminar cuáles son las librerías que se encuentran dentro de esta. Mostrar todas las funciones que nos presenta el C, con sus respectivas funciones.La Biblioteca Estándar de CLa?biblioteca estándar de?C?es una recopilación de ficheros cabecera y bibliotecas con rutinas, estandarizadas por un comité de la?Organización Internacional para la Estandarización?(ISO), que implementan operaciones comunes, tales como las de entrada y salida o el manejo de cadenas. A diferencia de otros lenguajes como COBOL,?FORTRAN, o?PL/I, C no incluye palabras clave para estas tareas, por lo que prácticamente todo programa implementado en C se basa en la biblioteca estándar para funcionar. Dise?oEl nombre y las características de cada función, el?prototipo, así como la definición de algunos?tipos de datos?y?macros, se encuentran en un fichero denominado archivo de cabecera (con extensión ".h"), pero la implementación real de las funciones están separadas en un archivo de la biblioteca. La denominación y el ámbito de las cabeceras se han convertido en comunes, pero la organización de las bibliotecas sigue siendo diversa, ya que éstas suelen distribuirse con cada?compilador. Dado que los compiladores de C, a menudo, ofrecen funcionalidades adicionales que no están especificados en el?ANSI C, la biblioteca de un compilador no siempre es compatible con el estándar ni con las bibliotecas de otros compiladores.Calidad del dise?oEstá demostrado que la mayor parte de la biblioteca estándar de C ha sido bien dise?ada, aunque, se ha comprobado que algunas partes también son fuente de errores; funciones para entrada de cadenas como?gets()?o?scanf(), producen desbordamientos de buffer, y muchas guías de programación recomiendan evitar su uso. La función?strtok()?presenta otra singularidad, está dise?ada para ser utilizada como un?analizador léxico?rudimentario, pero resulta difícil de utilizar además de ser muy frágil. El estándar ANSILa biblioteca estándar de ANSI C consta de 24 ficheros cabecera que pueden ser incluidos en un proyecto de programación con una simple directiva. Cada cabecera contiene la declaración de una o más funciones,?tipos de datos?y?macros.En comparación con otros lenguajes de programación (como por ejemplo?Java) la biblioteca estándar es muy peque?a, está proporciona un conjunto básico de funciones matemáticas, de tratamiento de cadenas, conversiones de tipo y entrada/salida por?consola?o por ficheros. No se incluyen, ni un conjunto de tipos de datos contenedores básicos (listas, pilas, colas, ...), ni herramientas para crear una?interfaz gráfica de usuario?(GUI), ni operaciones para trabajar en red, no otras funcionalidades que un lenguaje como Java incorpora de manera estándar. La principal ventaja del reducido tama?o de la biblioteca estándar de C es que construir un entorno de trabajo en ANSI C es muy fácil y, en consecuencia, portar un programa en ANSI C de una plataforma a otra es relativamente sencillo.Se han desarrollado muchas otras bibliotecas para proporcionar una funcionalidad equivalente a la de otros lenguajes de programación. Por ejemplo, el proyecto de desarrollo del?entorno de escritorio?de?GNOME?creó las bibliotecas?GTK+?y?GLib?con funcionalidades para desarrollar y trabajar con interfaces gráficas de usuario. La variedad de bibliotecas disponibles ha hecho que, a lo largo de la historia, haya quedado demostrada la superioridad de algunas de estas herramientas. El gran inconveniente es que a menudo no funcionan especialmente bien en conjunto, normalmente son los propios programadores familiarizados con las diferentes bibliotecas quienes consiguen sacarles el máximo partido, aunque diferentes partes de ellas puedan estar disponibles en cualquier plataforma. La biblioteca estándar de C en C++El lenguaje de programación?C++?incluye la funcionalidad de la biblioteca estándar ANSI C, pero hace algunas modificaciones como cambiar los nombres de los ficheros de cabecera, de?<xxx.h>?a?<cxxx>?(aunque los nombres en estilo C, aun siendo obsoletos, siguen estando disponibles), y ubican todos los?identificadores?dentro del?namespace?std.Archivos de cabeceras de la biblioteca ANSI C<assert.h>Contiene la macro?assert?(aserción), utilizada para detectar errores lógicos y otros tipos de fallos en la?depuración?de un programa.<complex.h>Conjunto de funciones para manipular?números complejos?(nuevo en C99).<ctype.h>Contiene funciones para clasificar caracteres según sus tipos o para convertir entre mayúsculas y minúsculas independientemente del?conjunto de caracteres?(típicamenteASCII?o alguna de sus extensiones).<errno.h>Para testar los códigos de error devueltos por las funciones de biblioteca.<fenv.h>Para controlar entornos en?coma flotante?(nuevo en C99).<float.h>Contiene la definición de constantes que especifican ciertas propiedades de la biblioteca de coma flotante, como la diferencia mínima entre dos números en coma flotante (_EPSOLON), el número máximo de dígitos de precisión (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX).<inttypes.h>Para operaciones de conversión con precisión entre tipos enteros (nuevo en C99).<iso646.h>Para utilizar los conjuntos de caracteres?ISO 646?(nuevo en NA1).<limits.h>Contiene la definición de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX).<locale.h>Para la función?setlocale()?y las constantes relacionadas. Se utiliza para seleccionar el entorno?local?apropiado (configuración regional).<math.h>Contiene las funciones matemáticas comunes.<setjmp.h>Declara las macros?setjmp?y?longjmp?para proporcionar saltos de flujo de control de programa no locales.<signal.h>Para controlar algunas situaciones excepcionales como la división por cero.<stdarg.h>posibilita el acceso a una cantidad variable de argumentos pasados a una función.<stdbool.h>Para el tipo?booleano?(nuevo en C99).<stdint.h>Para definir varios?tipos enteros?(nuevo en C99).<stddef.h>Para definir varios tipos de macros de utilidad.<stdio.h>Proporciona el núcleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable función?printf).<stdlib.h>Para realizar ciertas operaciones como conversión de tipos, generación de números pseudo-aleatorios, gestión de memoria dinámica, control de procesos, funciones de entorno, de se?alización (??), de ordenación y búsqueda.<string.h>Para manipulación de?cadenas de caracteres.<tgmath.h>Contiene funcionalidades matemáticas de tipo genérico (type-generic) (nuevo en C99).<time.h>Para tratamiento y conversión entre formatos de fecha y hora.<wchar.h>Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o más bytes por carácter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1).<wctype.h>Para clasificar caracteres anchos (nuevo en NA1).Ahora profundizaremos en las siguientes librerías: La librería stdio.hLa biblioteca <stdio.h>, cuyas siglas significan “standard input-output header” (cabecera standar de entrada y salida), es la?biblioteca estándar?del?lenguaje de programación?C, el?archivo de cabecera?que contiene las definiciones de?macros, las?constantes, las declaraciones de funciones y la definición de?tipos?usados por varias operaciones estándar de entrada y salida. Por motivos de compatibilidad, el lenguaje de programación?C++?(derivado de C) también tiene su propia implementación de estas funciones, que son declaradas con el archivo de cabecera?cstdio.Las funciones declaradas en?stdio.h?son sumamente populares. Los programadores tienen que incluir el archivo de cabecera?stdio.h?dentro del código fuente para poder utilizar las funciones que están declaradas. Aparte de las funciones también encontramos variables y tipos de dato propios de la biblioteca que se pasaran a definir a continuación: Funciones en la <stdio.h>Las funciones declaradas en?stdio.h?pueden clasificarse en dos categorías: funciones de manipulación de ficheros y funciones de manipulación de entradas y salidas. Las funciones de manipulación de puntero que encontramos en la stdio.h son: NombreDescripciónfclosecierra un fichero a través de su punterofopen,freopen, fdopenabre un fichero para lectura, para escritura/reescritura o para adiciónremoveelimina un ficherorenamecambia al fichero de nombrerewindLa función rewind coloca el indicador de posición de fichero para el stream apuntado por stream al comienzo del fichero.tmpfilecrea y abre un fichero temporal que es borrado cuando cerramos con la función fclose()Las funciones de manipulación de datos de entrada y salida que encontramos en esta biblioteca son cerca de 44 funciones representadas en la siguiente tabla: clearerrfclosefeofferrorfflushfgetcfgetposfgetsfopenformatofprintffputcfputsfreadfreopenfscanffseekfsetposftellfwritegetcgetchargetsperrorprintfputcputcharputsremoverenamerewindscanfsetbufsetvbufsprintfsscanftmpfiletmpnamungetcvfprintfvprintfvsprintf??Dentro de estas funciones se destacan las funciones: getchar, putc, putchar, getc, gets, puts, fflush, scanf, printf, debido a que están se usan con mayor frecuencia en los programas en C. getchar ( ): esta función se utiliza para leer solo un carácter introducido por un dispositivo de entrada. Formato: Variable de carácter = getchar ( ); getc( ): devuelve un carácter desde un fichero. putchar( ): esta función se utiliza para visualizar un carácter al dispositivo de salida. Formato: putchar(variable de carácter);putc( ) : devuelve un carácter de un fichero.scanf( ): se utiliza para introducir cualquier combinación de datos procedentes del dispositivo (valores numéricos, cadenas de caracteres o caracteres sueltos). Formato: scanf(cadena de control, arg1, arg2, … , arg n )printf( ): se utiliza para visualizar cualquier combinación de datos (valores numéricos, cadenas de caracteres o caracteres sueltos). Formato: printf(cadena de control, arg1,arg2,…, arg n); gets( ): facilitan la transferencia de cadenas de caracteres, esta función se utiliza para introducir una cadena de caracteres. Formato: gets(cadena de caracteres); puts( ): facilitan la transferencia de cadenas de caracteres, esta función se utiliza para mostrar una cadena de caracteres. Formato: puts(cadena de caracteres); fflush( ): Sirve para vaciar el buffer de escritura del archivo especificado. Constantes predeterminadas en la <stdio.h> Las constantes definidas en el fichero cabecera?stdio.h?son:NombreDescripciónEOFentero negativo (int) usado para indicar "fin de fichero"BUFSIZentero que indica el tama?o del?buffer?utilizado por la función?setbuf()FILENAME_MAXtama?o máximo de la?cadena de caracteres?que contienen el nombre de un fichero para ser abiertoFOPEN_MAXNúmero máximo de ficheros que pueden estar abiertos simultáneamente_IOFBFabreviatura de?input/output fully buffered?(buffer entrada/salida totalmente lleno); es un entero que se puede pasar como parámetro de la función?setvbuf()?para requerirbloqueo del buffer?en la entrada y salida del?stream?abierto_IOLBFabreviatura de?input/output line buffered?(...??); es un entero que se puede pasar como parametro a la función?setvbuf()?para requerir?line buffered (??)?en la entrada y salida del?stream?abierto_IONBFabreviatura de "input/output not buffered" (entrada/salida sin buffer); es un entero que se puede pasar como parametro a la función?setvbuf()?para requerir que la entrada salida del stream abierto funcione sin bufferL_tmpnamtama?o de la cadena de caractres con la longitud suficiente para almacenar un nombre de fichero temporal generado por la función?tmpnam()NULLmacro que representa la constante?puntero nulo; representa un valor de puntero que no apunta a ninguna dirección válida de objeto alguno en memoriaSEEK_CURentero que se puede pasar como parámetro a la función?fseek()?para indicar posicionamiento relativo a la posición actual del ficheroSEEK_ENDentero que se puede pasar como parámetro a la función?fseek()?para indicar posicionamiento relativo al final del ficheroSEEK_SETentero que se puede pasar como parámetro a la función?fseek()?para indicar posicionamiento relativo al inicio del ficheroTMP_MAXel número máximo de nombres de ficheros únicos generables por la función?tmpnam()Variables que podemos encontrar en la <stdio.h> El fichero de cabecera?stdio.h?define las siguientes variables:NombreDescripciónstdinpuntero a?FILE?que referencia la entrada estándar, normalmente el tecladostdoutpuntero a?FILE?que referencia la salida estándar, normalmente el monitorstderrpuntero a?FILE?que referencia la salida de error estándar, normalmente el monitorTipos de datos Los?tipos de datos?definidos en el fichero de cabecera?stdio.h?son:FILE?- estructura que contiene información sobre el fichero o stream (flujo) de texto necesario para realizar las operaciones de entrada/salida sobre él. incluye:posición actual de streamindicador de fin de fichero (EOF)indicador de errorpuntero al buffer del streamfpos_t?- tipo?no-array?capaz de identificar unívocamente la posición de cada?byte?en un archivosize_t?- tipo entero sin signo (positivo); es el tipo devuelto por el operador?sizeofEjemplos Ejemplo No.1: #include <stdio.h>?main(){???int?a, b;?? printf(?"Introduzca el primer número: "?);?? scanf(?"%d", &a );?? printf(?"Introduzca el segundo numero: "?);?? scanf(?"%d", &b );?? printf(?"Los valores son: %d, %d ", a, b );?} Introduzca el primer número: 76Introduzca?el segundo numero: 45Los valores son: 76, 45?Ejemplo No. 2:#include <stdio.h>main(){???char?a, b, c;?? printf(?"Introduzca primer caracter: "?);?? scanf(?"%c", &a );?? printf(?"Introduzca segundo caracter: "?);?? fflush( stdin );?? scanf(?"%c", &b );?? printf(?"Introduzca tercer caracter: "?);?? fflush( stdin );?? scanf(?"%c", &c );?? printf(?"Los valores son: %c, %c, %c ", a, b, c );}La primera vez que se ejecuta?scanf, el buffer del teclado está vacío, por tanto, no es preciso utilizar?fflush, pero sí, en los dos casos posteriores. Obsérvese que, a?fflush?hay que indicarle el buffer a limpiar,?Standar Input?(stdin) en este caso.La librería Conio.h Contiene los prototipos de las funciones, macros, y constantes para preparar y manipular la consola en modo texto en el entorno de MS-DOS?.Funciones más importantes de la <conio.h> gotoxy (columna, fila)Sitúa el cursor en la columna y fila especificada. Por ejemplo, esta instrucción:gotoxy (5, 2);…sitúa el cursor en la fila 2, columna 5 de la pantalla. La siguiente instrucción de escritura en consola comenzará a escribir a partir de esas coordenadas.cprintf() y cscanf()Son las equivalentes a printf() y scanf(). Su sintaxis es la misma, y es recomendable usarlas en lugar de las funciones estándar para evitar funcionamientos extra?os.textcolor(color)Cambia el color del texto. Los colores predefinidos son: BLACK, BLUE, RED, GREEN, CYAN, MAGENTA, BROWN, DARKGRAY. Además, existen las variedades “claras” de estos colores: LIGHTBLUE, LIGHTRED, LIGHTGREEN, etc.Así, si ejecutamos:textcolor (LIGHTRED);…el texto que se escriba a continuación aparecerá el color rojo intenso.textbackground (color)Establece el color del fondo del texto. Los colores predefinidos son los mismos que para textcolor(). Así, este código:textbackground (BLUE);…hace que el texto que se escriba a continuación aparezca con el fondo en color azul oscuro.cgetsEsta función leerá una cadena de caracteres desde la consola, guardando la cadena (y su longitud) en el lugar apuntado por *cadena. La función cgets leerá caracteres hasta que encuentre una combinación de retorno de línea y nueva línea (CR/LF), o hasta que el número máximo de caracteres permitidos hayan sido leídos. Si se lee una combinación CR/LF, entonces es sustituido por un carácter nulo '\0' antes de ser guardado la cadena.Cputs Muestra la cadena, que finaliza con el carácter nulo, apuntada por el argumento cadena en la ventana de texto actual. Esta función es similar a la función puts, pero con dos excepciones: la función cputs no convertirá los caracteres de nueva línea (\n) en la pareja de caracteres de retorno de línea/nueva línea (\r\n) tampoco a?adirá el carácter de nueva línea al final del texto.Kbhit Revisa si una tecla pulsada está disponible. Cualesquier pulsadas disponibles pueden ser recogidas con las funciones getch o getche.getch ()Lee un carácter desde el teclado, sin mostrar el eco y sin necesidad de pulsar Return. Devuelve el código ASCII del carácter tecleado. Ahí va un ejemplo:char c;c = getch();clrscr ()Borra la pantalla. No necesita argumentos.La librería Ctype.h Este archivo de cabecera analiza el tipo de carácter dependiendo de la función mandada a llamar. El carácter puede ser mandado a la función como un número entero o como un carácter (variable o encerrado entre apóstrofos). Si la función determina que no es ese tipo de carácter regresa el valor de 0 (que para c es un valor de falso y otro valor si lo es (para C es un valor de verdadero). Existen también un par de funciones que permiten convertir un carácter de minúscula a mayúscula y viceversa,Funciones dentro de <Ctype.h> Isalnum: determina si el character c es una letra del alfabeto (de la a a la z sin distinguir entre mayúsculas y minúsculas) o un digito. Si no es letra o digito regresa un valor cero, de lo contrario regresa un valor distinto de cero.Formato: Int isalnum (int c)ProgramaSalidavoid main (void){char letra;letra=getche();if (isalnum(letra))printf("\n%c es una letra o número", letra);elseprintf("\n%c no es una letra ni número", letra);}Si letra='r'"r es una letra o número"Si letra='7'"7 es una letra o número"Si letra='$'"$ no es una letra ni número"Isdigit: determina si el carácter c es un número. Si no es un número regresa un valor cero, de lo contrario regresa un valor distinto de cero.Fomarto: int isdigit (int c)Ejemplo:ProgramaSalidavoid main (void){char letra;letra=getche();if (isdigit(letra))printf("\n%c es un número", letra);elseprintf("\n%c no es un número", letra);}Si letra='4'"4 es un número"Si letra='$'"$ no es un número"Isascii: determina si el entero c es un carácter de la tabla de código ASCII básico (del 0? al 127). Si no es un carácter ASCII básico regresa un valor cero, de lo contrario regresa un valor distinto de cero. Formato: int isascii (int c)Ejemplo:ProgramaSalidavoid main (void){char letra;letra=getche();if (isascii(letra))printf("\n%c es ASCII básico", letra);elseprintf("\n%c no es un ASCII básico", letra);}Si letra='+'"+ es un ASCII básico"Si letra='?'"? no es un ASCII básico"Isspace: determina si el caracter c es un caracter blanco (tab, espacio, retorno de carro, cambio de línea, tab vertical, salto de página). Si no es caracter blanco regresa un valor cero, de lo contrario regresa un valor distinto de cero.Formato: int isspace (int c)Ejemplo:ProgramaSalidavoid main (void){char letra;letra=getche();if (isspace(letra))printf("\n%02x es un caracter blanco", letra);elseprintf("\n%c no es un caracter blanco", letra);}Si letra='\t'"0x09 es un caracter blanco"Si letra='$'"$ no es un caracter blanco"islower : determina si el caracter c es una letra minúscula. Si no es minúscula regresa un valor cero, de lo contrario regresa un valor distinto de cero.Formato: int islower (int c)Ejemplo:ProgramaSalidavoid main (void){char letra;letra=getche();if (islower(letra))printf("\n%c es una letra minúscula", letra);elseprintf("\n%c no es una letra minúscula", letra);}Si letra='r'"r es una letra minúscula" Si letra='R'"R no es una letra minúscula" Si letra='&'"& no es una letra minúscula" Isupper: Determina si el caracter c es una letra mayúscula. Si no es mayúscula regresa un valor cero, de lo contrario regresa un valor distinto de cero.Formato: int isupper (int c)Ejemplo:ProgramaSalidavoid main (void){char letra;letra=getche();if (isupper(letra))printf("\n%c es una letra mayúscula", letra);elseprintf("\n%c no es una letra mayúscula", letra);}Si letra='R'"R es una letra mayúscula" Si letra='r'"r no es una letra mayúscula" Si letra='&'"& no es una letra mayúscula" Toascii: convierte un entero a un carácter ASCII básico (solo mantiene los 7 bits menos significativos).? Formato: int toascii (int c)Ejemplo:ProgramaSalidavoid main (void){char letra;letra=getche();printf("\n%c sin convertir", letra);printf("\n%c convertido a ASCII", toascii(letra));}Si letra='r'"r sin convertir""r convertido a ASCII"Si letra='ú'"ú sin convertir""# convertido a ASCII"tolower : Convierte una letra mayúscula a minúscula.?Si es una letra mayúscula retornara su equivalente en minúscula, de lo contrario retornará el carácter sin modificación alguna.Formato: int tolower (int c)Ejemplo:ProgramaSalidavoid main (void){char letra;letra=getche();printf("\n%c sin convertir", letra);printf("\n%c en minúscula", tolower(letra));}Si letra='A'"A sin convertir""a en minúscula"Si letra='5'"5 sin convertir""5 en minúscula"toupper: Convierte una letra minúscula a mayúscula.? Si es una letra minúscula retornara su equivalente en mayúscula, de lo contrario retornará el carácter sin modificación alguna.Formato: int toupper (int c)Ejemplo:ProgramaSalidavoid main (void){char letra;letra=getche();printf("\n%c sin convertir", letra);printf("\n%c en mayúscula", toupper(letra));}Si letra='a'"a sin convertir""A en mayúscula"Si letra='5'"5 sin convertir""5 en mayúscula"La librería Stdlib.h stdlib.h?, cuyas siglas se definien como: std-lib:?standar?library?o biblioteca estándar, es el archivo de cabecera de la?biblioteca?estándar de propósito general del?lenguaje de programación C. Contiene los prototipos de funciones de C para gestión de memoria dinámica, control de procesos y otras. Es compatible con?C++?donde se conoce como?cstdlib.Las funciones que pertenencen a?stdlib.h?pueden clasificarse en las siguientes categorías: conversión, memoria, control de procesos, ordenación y búsqueda, matemáticas.NombreDescripciónConversión de tiposatof?(ascii to float)cadena de caracteres?a?coma flotanteatoi?(ascii to integer)cadena de caracteres a?enteroatol (C Standard Library)?(ascii to long)cadena de caracteres a entero tama?o largostrtod?(string to double)cadena de caracteres a coma flotante tama?o doblestrtol?(string to long)cadena de caracteres a entero largostrtoul?(string to unsigned long)cadena de caracteres a entero largo sin signo (positivo)Generación de?números pseudo-aleatoriosrandGenera un número pseudo-aleatoriosrandEstablece la semilla para el generador de números pseudo-aleatoriosGestión de memoria dinámicamalloc,?calloc,?reallocReservan memoria dinámica del?heap?(montón?o?montículo)freeLiberan memoria devolviéndola al?heapControl de procesosabortterminar ejecución anormalmenteatexitregistrar una función?callback?para la salida del programaexitterminar ejecución del programagetenvrecuperar una variable de entornosystemejecutar un comando externoOrdenación y búsquedabsearchbúsqueda binaria en un arrayqsortordena un?vector (informática)?usando?QuicksortMatemáticasabs,?labsvalor absolutodiv,?ldivdivisión entera o euclidianaAhora pasaremos a definir algunas de las funciones que se utilizan mas de esta librería que son: Atoi: Convierte una cadena a un enteroFormato: int atoi ( const char * str );Analiza la cadena str C interpretación de su contenido como un número entero, que se devuelve como un valor int.Los descartes primera función como muchos espacios en blanco como sea necesario hasta que el primer carácter no blanco se encuentra. Luego, a partir de este personaje, toma un opcional signo inicial más o menos seguido de tantos caracteres numéricos como sea posible, y las interpreta como un valor numérico.La cadena puede contener caracteres adicionales después de los que forman el número entero, que se ignoran y no tienen ningún efecto sobre el comportamiento de esta función.Si la primera secuencia de caracteres no está en blanco str no es un número entero válido, o si no existe tal secuencia, ya sea porque str está vacío o sólo contiene espacios en blanco, sin conversión se realiza.Atof : convierte una cadena a dobleFormato: double atof ( const char * str );Analiza la cadena str C interpretación de su contenido como un número de punto flotante y devuelve su valor como un doble.Los descartes primera función como muchos espacios en blanco como sea necesario hasta que el primer carácter no blanco se encuentra. Luego, a partir de este personaje, toma como muchos personajes de lo posible que son válidos después de una sintaxis parecida a la de los literales de coma flotante, y las interpreta como un valor numérico. El resto de la cadena después de que el último carácter válido es ignorado y no tiene ningún efecto sobre el comportamiento de esta función.Un número válido de punto flotante para atof está formado por una sucesión de:Un signo opcional más o menosUna secuencia de dígitos, de forma opcional que contiene un carácter de punto decimalUna parte exponente opcional, que a su vez consiste en una 'e ' o 'E' caracteres seguido de un signo opcional y una secuencia de dígitos.Si la primera secuencia de caracteres no está en blanco str no forman un número válido de punto flotante como acaba de definir, o si no existe tal secuencia, ya sea porque str está vacío o sólo contiene espacios en blanco, sin conversión se realiza.Rand: Devuelve un número entero pseudo-aleatorio en el rango de 0 a RAND_MAX.Formato: int rand ( void );Este número es generado por un algoritmo que devuelve una secuencia de números aparentemente no relacionados cada vez que se llama. Este algoritmo utiliza una semilla para generar la serie, que debería ser inicializado a un valor distintivo con srand.RAND_MAX es una constante definida en <cstdlib>. Su valor por defecto puede variar entre las implementaciones pero se concede al menos 32.767.Una forma típica de generar números pseudo-aleatorios en un rango determinado utilizando rand es utilizar el módulo del valor devuelto por el lapso de gama y a?ade el valor inicial de la gama:(% valor de 100) se encuentra en el rango de 0 a 99(valor 100% + 1) se encuentra en el rango de 1 a 100(valor 30% + 1985) está en el rango 1985 a 2014Srand: inicializa el generador de números aleatoriosFormato: void srand (unsigned int semilla);El generador de números pseudo-aleatorios se inicializa con el argumento pasado como semilla.Para cada valor de inicialización diferentes utilizados en una llamada a srand, el generador de números pseudo-aleatorios se puede esperar para generar una sucesión de diferentes resultados en las posteriores convocatorias de rand.Dos inicializaciones diferentes con la misma semilla, la instrucción de generador de pseudo-aleatorios para generar la misma sucesión de los resultados de las posteriores convocatorias de rands en ambos casos.Si la semilla se establece en 1, el generador se reinicializa a su valor inicial y produce los mismos valores que antes de cualquier llamada a srand o rands.Con el fin de generar números al azar-como, srand es normalmente inicializado a un valor distintivo, como los relacionados con el tiempo de ejecución. Por ejemplo, el valor devuelto por la función de tiempo (declarada en <ctime> encabezado) es diferente a cada segundo, que es distintivo suficiente para la mayoría de las necesidades del azar.System: ejecuta un comando del sistemaFormato: int system (const char * command);Inicia el procesador de comandos para ejecutar un comando. Una vez que la ejecución de comandos ha terminado, el procesador da el control al programa, devolver un valor entero, cuya interpretación depende del sistema.La función de llamada también se puede utilizar con NULL como argumento para comprobar si existe un procesador de comandos.La librería String.hstring.h?es un archivo de la?Biblioteca estándar?del?lenguaje de programación C?que contiene la definición de?macros,?constantes, funciones y?tipos?de utilidad para trabajar con?cadenas de caracteres?y algunas operaciones de manipulación de memoria (el nombre?string?puede ser algo inapropiado).Las funciones declaradas en?string.h?se han hecho muy populares, por lo que están garantizadas para cualquier plataforma que soporte C. Sin embargo, existen algunos problemas de seguridad con estas funciones, como el?desbordamiento de buffer?(buffer overflow), que hacen que algunos programadores prefieran opciones más seguras frente a la portabilidad que estas funciones ofrecen. Además, las funciones para cadenas de caracteres sólo trabajan con conjuntos de caracteres?ASCII?o extensiones ASCII compatibles.Funciones dentro de <string.h> Dentro de las funciones que nos ofrece la biblioteca encontramos las siguientes: NombresDescripciónmemcpycopia n bytes entre dos áreas de memoria que no deben solaparsememmovecopia n bytes entre dos áreas de memoria; al contrario que?memcpy?las áreas deben solaparsememchrbusca un valor a partir de una dirección de memoria dada y devuelve un puntero a la primera ocurrencia del valor buscado o?NULL?si no se encuentramemcmpcompara los n primeros caracteres de dos áreas de memoriamemsetsobre escribe un área de memoria con un patrón de bytes dadostrcata?ade una cadena al final de otrastrncata?ade los n primeros caracteres de una cadena al final de otrastrchrlocaliza un carácter en una cadena, buscando desde el principiostrrchrlocaliza un carácter en una cadena, buscando desde el finalstrcmpcompara dos cadenas numéricamente ('a'!='A')strncmpcompara los n primeros caracteres de dos cadenas numéricamente ('a'!='A')strcollcompara dos cadenas según la colación actual ('a'=='A')strcpycopia una cadena en otrastrncpycopia los n primeros caracteres de una cadena en otrastrerrordevuelve la cadena con el mensaje de error correspondiente al número de error dadostrlendevuelve la longitud de una cadenastrspndevuelve la posición del primer carácter de una cadena que no coincide con ninguno de los caracteres de otra cadena dadastrcspndevuelve la posición del primer carácter que coincide con alguno de los caracteres de otra cadena dadastrpbrkencuentra la primera ocurrencia de alguno de los caracteres de una cadena dada en otrastrstrbusca una cadena dentro de otrastrtokparte una cadena en una secuencia de tokensstrxfrmtransforma una cadena en su forma de colación (??)strrevinvierte una cadenaEntre todas estas funciones que nos ofrece la string.h podemos considerar las siguientes como las de uso frecuente, en cuanto a esta biblioteca se refiere: NombreFormato Descripción Valor retornadostrcpy( )# include <string.h>char * strcpy (char * s1, const char * s2);El strcpy () copia la cadena apuntada por s2 (incluyendo el byte nulo de terminación) en el array apuntado por s1. Si la copia se realiza entre los objetos que se superponen, el comportamiento es indefinido.El strcpy () devuelve s1, sin valor de retorno se reserva para indicar un error.strlen( )# include <string.h>size_t strlen (const char * s);La función strlen () calcula el número de bytes de la cadena a la que s puntos, sin incluir el byte nulo de terminación.La función strlen () devuelve la longitud de s, sin valor de retorno se reserva para indicar un error.strncmp( )# include <string.h>int strncmp (const char * s1, const char * s2, size_t n);El strncmp () compara no más de n bytes (bytes que siguen un byte nulo no se comparan) del array apuntado por s1 con la cadena apuntada por s2.El signo de un valor de retorno distinto de cero se determina por el signo de la diferencia entre los valores de la primera pareja de bytes (ambos interpretados como el tipo unsigned char) que difieren en las cadenas que se comparan.Si es correcto, strncmp () devuelve un número entero mayor, igual o inferior a 0, si la matriz posiblemente terminada en nulo apuntado por s1 es mayor, igual o inferior a la matriz posiblemente terminada en nulo apuntada por s2 , respectivamente.strncpy( )# include <string.h>char * strncpy (char * s1, const char * s2, size_t n);El strncpy () copia no más de n bytes (bytes que siguen un byte nulo no se copian) de la cadena apuntada por s2 a la cadena apuntada por s1. Si la copia se realiza entre los objetos que se superponen, el comportamiento es indefinido.Si el array apuntado por s2 es una cadena que es menor que n bytes, bytes nulos se a?aden a la copia en el array apuntado por s1, hasta que n bytes en todos se escriben.El strncpy () devuelve s1, sin valor de retorno se reserva para indicar un error.La librería Time.h La biblioteca time.h?es un archivo de cabecera de la?biblioteca estándar?del?lenguaje de programación C?que contiene funciones para manipular y formatear la fecha y hora del sistema. Función?Usoasctime()Obtener una cadena alfanumérica del tipo?Mon Nov 21 11:31:54 1993\n\0?a partir de una estructura?tm?clock()? Obtener el tiempo transcurrido desde el comienzo de la ejecución del programactime()? Obtener una cadena alfanumérica del tipo se?alado para?asctime?a partir de un timestamp.difftime()? Obtener el tiempo en segundos entre dos timestamp.gmtime()? Obtener una fecha GMT en formato?tm?a partir de un timestamp con la hora local.localtime()? Obtener una fecha en formato?tm?a partir de un timestamp.mktime()? Obtener un timestamp numérico a partir de una fecha?tm.strftime()? Obtener una representación alfanumérica a partir de una fecha?tm? (acepta un formateo similar a?printf)time()? Obtener un timestamp con la fecha y hora del Sistema.Además de las funciones anteriores, la STL define tres tipos simples:?size_t;?clock_t,??time_t?y una estructura?tm. En realidad se trata de typedefs dependientes de la implementación. typedef long time_t;size_tEl tipo?size_t?es utilizado en muchas ocasiones. Por ejemplo, es el resultado devuelto por el operador?sizeof?. Es un entero sin signo cuyo tipo exacto depende de la implementación, aunque suele ser de al menos 32 bits (4 Bytes). Normalmente está definido en diversos ficheros de cabecera, entre otros <ctime>, aunque es frecuente que de una cabecera se redireccione a otra donde realmente está definido. En el caso de MS Visual C++ 6.0 y Borland C++size_t?es un tipo?unsigned int?clock_tRepresenta el valor devuelto por la función?clock. En Borland C++ es un?long int?time_tRepresenta valores devueltos por las funciones?time() y?mktime(). En MS Visual C++ y Borland C++ es un?long int?tmEs una estructura utilizada por diversas funciones de la Librería para almacenar información relativa a fecha y hora. Por ejemplo:?asctime y?localtime.? Responde a la definición siguiente:struct tm {?int tm_sec;?? // Segundos pasados del minuto (0-61)?int tm_min;?? // Minutos pasados de la hora (0-59)?int tm_hour;? // Horas desde medianoche (0-23)?int tm_mday;? // Dia del mes (1-31)?int tm_mon;?? // Número del mes (0-11)?int tm_year;? // A?os transcurridos desde 1900?int tm_wday;? // Dia de semana (0-6; Domingo = 0)?int tm_yday;? // Dia del a?o (0-365)?int tm_isdst; /* Adelanto de hora para horario de verano????????????????? ?1=Si; 0=No; -1=Indefinido */};Definición de las funciones de time.hAsctime( )La función se presenta en dos versiones:?asctime?para caracteres normales y?_wasctime?para caracteres anchos, que responden a los siguientes prototipos:#include <time.h>char* asctime(const struct tm* tmPtr);wchar_t* _wasctime(const struct tm* tmPtr);Descripción:Ambas funciones aceptan un puntero a una estructura tipo?tm?, y devuelven un puntero a una cadena de caracteres con información alfanumérica sobre la fecha contenida en la estructura. La cadena es de ancho fijo (26 caracteres), mantiene siempre el mismo formato, y es reescrita cada vez que se invoca la función:Mon Nov 21 11:31:54 1993\n\0El reloj utilizado es de 24 horas, y cualquiera que sea el tipo de caracteres utilizados (anchos o estrechos), termina en los caracteres NL (New Line) y NUL (nulo).Ejemplo:#include <iostream>using namespace std;#include <ctime>int main() {??? // ==================? struct tm myt;? myt.tm_sec = 1;?? myt.tm_min = 30; myt.tm_hour = 9;? myt.tm_mday = 22; myt.tm_mon = 11; myt.tm_year = 56;? myt.tm_wday = 4;? myt.tm_yday = 0; myt.tm_isdst = 0;? char* cTim = asctime(&myt));? cout << "Fecha resultante: " << cTim;? return 0;}Salida:Fecha resultante: Thu Dec 22 09:30:01 1956Clock( )Prototipo:#include <time.h>clock_t clock(void);Descripción:Esta función devuelve un valor de tipo?clock_t??que representa el tiempo desde el comienzo del programa hasta el momento de invocación de la función. Mediante invocaciones sucesivas puede ser utilizada para obtener el tiempo entre dos puntos del programa.? En caso de error, si el tiempo de proceso no está disponible o no es representable, la función devuelve -1.El valor devuelto representa el número de "tics" del RTC desde el inicio del programa. Es posible calcular este valor en segundos dividiéndolo por una constante denominadaCLK_TCK?en unos sistemas y?CLOCKS_PER_SEC?en otros. Definida en <ctime>.En el fichero <time.h> del compilador Borland C++ 5.5 encontramos las definiciones siguientes:#define CLOCKS_PER_SEC 1000.0#define CLK_TCK 1000.0Ejemplo:cout << "Desde el inicio: " << clock()/CLK_TCK << " segundos\n";Ctime( )Esta función se presenta en dos versiones:?ctime?para caracteres normales y?_wctime?para caracteres anchos. Prototipos:#include <ctime>char* ctime(const time_t* sTptr);wchar_t* _wctime(const time_t* sTptr);Descripción:Ambas funciones aceptan un puntero a un valor?time_t?que supuestamente contiene un timestamp expresado en segundos después del inicio de la época UNIX (1 de Enero de 1970 00:00:00 GMT). Por ejemplo un valor devuelto por la función?time.? Ambas funciones devuelven un puntero a una cadena de 26 caracteres que contiene la fecha y hora con un formato alfanumérico en el que todos los campos tienen siempre el mismo ancho, y que es reescrita cada vez que se invoca a la función (el reloj utilizado es de 24 horas):Mon Nov 21 11:31:54 1993\n\0Si la fecha corresponde a un momento anterior a Enero de 1970 se obtiene una cadena nula.Ejemplo:#include <iostream>using namespace std;#include <ctime>int main() { // =================?? time_t tSec = 31536000;?? time_t* tPtr = &tSec;?? char* sTptr = ctime(tPtr);?? cout << "Fecha: " << sTptr ;?? return 0;}Salida:Fecha: Fri Jan 01 01:00:00 1971Difftime( )Prototipo:#include <time.h>double difftime(time_t time2, time_t time1);Descripción:La función acepta dos valores tipo?time_t?y devuelve un?double?con el tiempo entre ambos valores expresado en segundos.Ejemplo:#include <iostream>using namespace std;#include <ctime>int main() {?????? // =================?? time_t first, second;?? first = time(NULL);?? delay(2000);???? // esperar 2 segundos?? second = time(NULL);?? cout << "Diferencia: " << difftime(second, first)) << " segundos\n";?? return 0;}Gmtime ( )Prototipo:#include <time.h>struct tm* gmtime(const time_t* tPtr);Descripción:La función acepta un puntero a un tipo?time_t, que suponemos contiene una fecha local (por ejemplo, obtenida con la función?time?, y devuelve un puntero a una estructura tipotm?que contiene la fecha convertida a la hora GMT correspondiente.Esta función puede ser útil en un programa que maneje comunicaciones por Internet, donde es costumbre utilizar la hora GMT en vez de la hora local.Ejemplo:#include <iostream>using namespace std;#include <ctime>int main() {????????????????? // =================?? time_t tSac = time(NULL);? // instante actual?? struct tm* pt1 = localtime(&tSac);?? cout << "hh:mm:ss " << pt1->tm_hour << ":" << pt1->tm_min << ":"????? ???????????????? << pt1->tm_sec << endl;?? cout << "dd-mm-aaaa: " << pt1->tm_mday << "-" << pt1->tm_mon+1 << "-"???????? ???????????????? << pt1->tm_year+1900 << endl;?? tm tm2 = *gmtime(&tSac);?? // deferencia y asignación?? cout << "hh:mm:ss " << tm2.tm_hour << ":" << tm2.tm_min << ":"??????????? ?????????? << tm2.tm_sec << endl;?? cout << "dd-mm-aaaa: " << tm2.tm_mday << "-" << tm2.tm_mon+1 << "-"??????? << tm2.tm_year+1900 << endl;?? return 0;}Salida:hh:mm:ss 22:45:2dd-mm-aaaa: 23-5-2003hh:mm:ss 5:45:2dd-mm-aaaa: 24-5-2003Comentario:Suponemos que el ordenador está situado en S. Francisco (USA), donde utilizan el horario PDT. En Mayo ya rige el horario de verano que tiene un retraso de 7 horas respecto a la hora Zulú. Cuando en S. Francisco son las 22:45 del día 23, en Greenwich son las 5:45 de la madrugada del día 24.Localtime( )Esta función, junto con?time, es posiblemente una de las más útiles de entre las que se refieren a asuntos de fecha y hora.Prototipo:#include <time.h>struct tm* localtime(const time_t* timer);Descripción:La función acepta un puntero a un tipo?time_t, que contiene una fecha expresada en segundos desde el inicio de la época UNIX, y devuelve un puntero a una estructura?tm?cuyos miembros contienen información sobre la fecha introducida. Sus miembros son sobreescritos con cada invocación a la función.Ejemplo:#include <iostream>using namespace std;#include <ctime>int main() {??????????? // =================?? char* dS[7] = {"Domingo","Lunes","Martes","Miercoles",???????? ???????? "Jueves","Viernes","Sabado"};?? time_t tSac = time(NULL);?????? // instante actual?? struct tm* tmP = localtime(&tSac);?? cout << "hh:mm:ss " << tmP->tm_hour << ":" << tmP->tm_min << ":"????? ???????????????? << tmP->tm_sec << endl;?? cout << "dd-mm-aaaa: " << tmP->tm_mday << "-" << tmP->tm_mon+1 << "-"??????????? ????????????? << tmP->tm_year+1900 << endl;?? cout << "Dia de semana: " << dS[tmP->tm_wday] << endl;?? cout << "Dia del a?o: " << tmP->tm_yday << endl;?? cout << "Horario de verano: " << (tmP->tm_isdst ? "Si" : "No") << endl;?? return 0;}Salida:hh:mm:ss 11:13:23dd-mm-aaaa: 22-5-2003Dia de semana: JuevesDia del a?o: 141Horario de verano: SiMktime ( )Prototipo:#include <time.h>time_t mktime(struct tm* tmPtr);Descripción:La función?mktime?realiza justamente la operación inversa que la anterir?localtime.? Acepta un puntero a una estructura?tm??con información sobre una fecha y devuelve un valor tipo?time_t?con el tiempo en segundos desde el inicio de la época UNIX.Strftime( )Esta función se presenta en dos versiones:?strftime?para caracteres normales y?wcsftime?para caracteres anchos.Prototipo:#include <time.h>size_t strftime(char*?str, size_t maxsize,??????????????? const char*?fmt, const struct tm* mPt);size_t wcsftime(wchar_t* str, size_t maxsize,??????????????? const wchar_t* fmt, const struct tm* mPt);Descripción:Como puede verse, la función devuelve un tipo?size_t, y acepta cuatro argumentos: un puntero-a-carácter?str?que se?ala una cadena de caracteres donde se obtendrá el resultado; un tipo?size_t?maxize;?un puntero a cadena de caracteres constante?fmt?y un puntero?mPt?a una estructura?tm??que suponemos contiene datos de una fecha.La función produce una cadena alfanumérica terminada en un carácter nulo, y la sitúa en el lugar se?alado por?str.?El valor devuelto es la longitud de esta cadena incluyendo el carácter de terminación. En caso de error, o si la longitud resulta mayor que?maxsize, el valor devuelto es cero y el resultado obtenido (cadena situada en?str) es indeterminado.La cadena producida es una versión de la fecha contenida en la estructura, pero formateada según determinados códigos de formateo que se sitúan en la cadena se?alada por?fmt.? El sistema es similar al de la conocida función?printf() que proporciona salidas formateadas. Los códigos permitidos son muy numerosos, de forma que puede controlarse todos los detalles de la representación (consulte el manual de su compilador al respecto).Ejemplo:#include <iostream>using namespace std;#include <ctime>int main() {???????????????? // =================?? time_t tSac = time(NULL); // instante actual?? tm tms = *localtime(&tSac);?? cout << "hh:mm:ss " << tms.tm_hour << ":" << tms.tm_min << ":"????? ???????????????? << tms.tm_sec << endl;?? cout << "dd-mm-aaaa: " << tms.tm_mday << "-" << tms.tm_mon+1 << "-"????? ??????????????????? << tms.tm_year+1900 << endl;?? char sRes[80];?? size_t r = strftime(sRes, 80,??????? ?? "Son %M minutos pasados de las %I horas (%Z) %A, %B %d 20%y",?????????? &tms);?? if (r) cout << sRes;?? return 0;}Salida:hh:mm:ss 20:14:13dd-mm-aaaa: 24-5-2003Son 14 minutos pasados de las 08 horas (WET) Saturday, May 24 2003Time( )Esta función devuelve la hora actual del sistema en segundos desde?el inicio de la época UNIX (1 de Enero de 1970 00:00:00 GMT).Prototipo:#include <ctime>time_t time(time_t* tPtr);Descripción:La función acepta un puntero a?time_t?y devuelve un valor?time_t?que es el tiempo en segundos transcurrido desde el inicio de la época UNIX. En realidad puede realizar dos funciones: si se pasa un valor?no?nulo, el valor correspondiente se almacena en el sitio se?alado por el puntero. Si este valor es nulo entonces el valor no se almacena en ningún sitio. En cualquier caso siempre devuelve un valor con el instante actual en segundos desde las 0 horas del 1 de Enero de 1970.Ejemplo:#include <iostream>using namespace std;#include <ctime>int main() {? // =================?? time_t t1 = 0;?? time_t* pt1 = &t1;?? time(pt1);?? cout << "Desde la epoca UNIX " << *pt1 << " segundos\n";?? time_t t2 = time(NULL);?? cout << "Desde la epoca UNIX " << t2 << " segundos\n";?? return 0;}Salida:Desde la epoca UNIX 1053550492 segundosDesde la epoca UNIX 1053550492 segundoLa librería Math.h Math.h es un archivo de cabecera de la biblioteca estándar del lenguaje de programación C dise?ado para operaciones matemáticas básicas. Muchas de sus funciones incluyen el uso de números en coma flotante. C++ también implementa estas funciones por razones de compatibilidad y las declara en la cabecera cmath.Funciones dentro de <math.h> Nombre DescripciónAcosCalcula el valor principal del arco coseno de x. Puede producirse un error de dominio para los argumentos que no estén en el intervalo [-1, +1]AsinCalcula el valor principal del arco seno de x. Puede producirse un error de dominio para los argumentos que no estén en el intervalo [-1, +1].AtanCalcula el valor principal del arco tangente de x.Atan2Calcula el valor principal del arco tangente de y/x, usando los signos de ambos argumentos para determinar el cuadrante del valor de retorno. Puede producirse un error de dominio si ambos argumentos son cero.CeilCalcula el valor integral más peque?o que no sea menor de x.CosCalcula el coseno de x (medido en radianes).ExpCalcula la función exponencial de x.FabsCalcula el valor absoluto del número de coma flotante, x.FloorCalcula el valor integral más grande que no sea mayor de x.FmodCalcula el resto de coma flotante de la división de x/y.LogCalcula el logaritmo natural (o neperiano). Puede producirse un error de dominio si el argumento es negativo. Puede producirse un error de recorrido si el argumento es cero.PowCalcula x elevado a la potencia de y. Puede producirse un error de dominio si x es negativo e y no es un valor entero. También se produce un error de dominio si el resultado no se puede representar cuando x es cero e y es menor o igual que cero. Un error de recorrido puede producirse.SinCalcula el seno de x (medido en radianes).SqrtCalcula la raíz cuadrada del valor no negativo de x. Puede producirse un error de dominio si x es negativo.TanCalcula la tangente de x (medido en radianes).AbsCalcula el valor absoluto.Programa EjemploEl siguiente programa fue un programa hecho por el grupo en el cual se muestran muchas de las funciones explicadas anteriormente que encontramos en la Biblioteca Estándar del C.Programa Fuente: #include<conio.h>#include<stdio.h>#include<math.h>#include<ctype.h>#include <time.h>#define pi 3.1416main(){ float r,a,v; int opcion,x=0; char resp='s',n[15]; clock_t comienzo; do {comienzo=clock(); printf("Introduzca su nombre "); scanf("%[^\n]",&n); printf("\nIntroduzca el radio de su esfera: "); scanf("%f",&r); printf("1) Area\n2) Volumen\n"); printf("Digite la opcion de la operacion a realizar "); scanf("%i",&opcion); switch(opcion) { case 1: a=4*pi*r*r; printf("\n"); puts(n); printf("\nEl area de la esfera es de: %.2f",a); break; case 2: v=(4/3)*pi*(pow(r,3)); printf("\n"); puts(n); printf("\nEl volumen de la esfera es de: %.3f",v); break; default:printf("\nIntrodujo un valor no valido para la opción de la operación"); } printf("\nDesea hacer la operación otra vez s/n: "); fflush(stdin); scanf("%c",&resp); if(isupper(resp)) resp='s'; fflush(stdin); } while(resp=='s'); printf("\nEl proceso tuvo un tiempo de duración de: %.1f segundos",(clock()-comienzo)/(double)CLOCKS_PER_SEC); getch(); return 0;}-1466851094105Capturas de pantalla: -1466854533900ConclusionesEl lenguaje de programación C posee diversas librerías dentro de la Librería Estándar del C, las cuales nos ayudan a realizar funciones para así no tendríamos que programarlas desde cero. Entre las bibliotecas encontramos: Stdio.h: la cual nos ayuda con los datos de E/SMath.h: la cual nos ayuda con funciones matemáticas (sen, cos,…)Conio.h: la cual nos ayuda a modificar la pantalla de MS-DOSTime.h: la cual nos ayuda con todo tipo de funciones referentes al tiempo. Ctype.h: que nos ayuda con operaciones básicas de caracteres. Stilib.h: que nos ayuda con métodos dinámicos entre otros. String.h: que nos ayuda a manipular cadenas.Al final podemos decir que: las biblioteca estándar de c son librerías que nos facilitan la programación en c ya que poseen funciones creadas que van a realizar un trabajo en especifico en nuestro programa, estas funciones nos pueden servir para e/s de datos, manejo de pantalla, manejo de cadenas y caracteres, además de las funciones matemáticas.Bibliografía y Web-grafías (Referencia electrónica)Luis Joyanes Aguilar. Fundamentos de Programación, Algoritmos, estructura de datos y objetos. Cuarta Edición. Mc Graw HillGoogle Chrome. Autor: Desconocido. Biblioteca Estándar del C. Fecha de Publicación: Desconocida. 15 de abril de 2011. Chrome. Autor: Desconocido. Stdlib.h. Fecha de Publicación: Desconocida. 17 de abril de 2011. Chrome. Autor: Desconocido. Ctype.h. Fecha de Publicación: Desconocida. 17 de abril de 2011. Chrome. Autor: Zator Systems. 9.1 Fecha y Hora. Fecha de Publicación: Desconocida. 17 de abril de 2011. Chrome. Autor: Desconocido. Librerias de C. Fecha de Publicación: Desconocida. 18 de abril de 2011. Chrome. Autor: Desconocido. Stdio.h. Fecha de Publicación: Desconocida. 18 de abril de 2011. Chrome. Autor: Alberto Pacheco. Funciones y Librerías. Fecha de Publicación: 12 de marzo de 2007. 18 de abril de 2011. Chrome. Autor: Marta Gardu?o. Archivo de Cabecera. Fecha de Publicación: 16 de octubre de 2008. 18 de abril de 2011. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download

To fulfill the demand for quickly locating and searching documents.

It is intelligent file search solution for home and business.

Literature Lottery

Related searches