Entrega extemporánea -15 Nota: 85 UNIVERSIDAD DE COSTA RICA ESCUELA DE INGENIERÍA ELÉCTRICA PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117 Francisco Molina Castro - B14194 LABORATORIO 14 - I CICLO 2012 Arreglos, Cadenas de Caracteres, Entrada y Salida 1. Escriba una función que tome como argumento una cadena de caracteres, verifique que los caracteres de la cadena correspondan a un número de punto flotante válido y realice la conversión, retornando el valor resultante. El programa ejemplo sería: # include < s t d i o . h> # include < s t d l i b . h> # include < s t r i n g . h> i n t main ( i n t argc , char ∗ argv [ ] ) { i n t i =0 , c o n t r o l 1 =0 , c o n t r o l 2 =0 , c o n t r o l 3 =0; i n t a= s t r l e n ( argv [ 1 ] ) ; i f ( argc ! = 2 ) { p r i n t f ( " −9999\n " ) ; } else { f o r ( i =0; i <a ; i + + ) { i f ( i ==0){ i f ( argv [ 1 ] [ i ]== ’− ’ ) { ++ c o n t r o l 2 ; } i f ( argv [ 1 ] [ i ]== ’ . ’ ) { ++ i ; ++ c o n t r o l 1 ; } } else { i f ( argv [ 1 ] [ i ]== ’− ’ ) { ++ c o n t r o l 2 ; } i f ( i s d i g i t ( argv [ 1 ] [ i ] ) = = 0 ) { ++ c o n t r o l 1 ; } } } } i f ( control1 >1|| control2 >1){ p r i n t f ( " −9999\n " ) ; } else { double a= s t r t o f ( argv [ 1 ] , NULL ) ; p r i n t f ( " %f \ n " , a ) ; } return 0; } 1 UNIVERSIDAD DE COSTA RICA ESCUELA DE INGENIERÍA ELÉCTRICA PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117 Francisco Molina Castro - B14194 LABORATORIO 14 - I CICLO 2012 Este nos da algunos resultados como: 2 UNIVERSIDAD DE COSTA RICA ESCUELA DE INGENIERÍA ELÉCTRICA PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117 Francisco Molina Castro - B14194 LABORATORIO 14 - I CICLO 2012 2. Escriba un programa que reciba, a través de la línea de comandos, el nombre de un archivo que contenga números enteros (uno por línea, máximo 100) en desorden, copie los números a un arreglo, ordene el arreglo de manera ascendente e imprima la lista de números ordenados en la terminal. El programa ejemplo sería: # include < s t d i o . h> # include < s t d l i b . h> # include < s t r i n g . h> i n t compare ( const void ∗ a , const void ∗ b ) { return ( ∗( i n t ∗) a − ∗( i n t ∗) b ) ; } i n t main ( i n t argc , char ∗ argv [ ] ) { / ∗ Comprueba que l a c a n t i d a d de argumentos sea l a c o r r e c t a ∗ / i f ( argc ! = 2 ) { f p r i n t f ( s t d e r r , " E r r o r : Cantidad de argumentos i n c o r r e c t a \ n " ) ; exit (1); } / ∗ Punteros a a r c h i v o ∗ / FILE ∗ o r i g e n ; / ∗ Abre l o s a r c h i v o s ∗ / o r i g e n = fopen ( argv [ 1 ] , " r " ) ; / ∗ Comprueba que l o s a r c h i v o s se hayan a b i e r t o c o r r e c t a m e n t e ∗ / i f ( o r i g e n == NULL ) { f p r i n t f ( s t d e r r , " E r r o r de e n t r a d a / s a l i d a \ n " ) ; exit (2); } i n t numeros [ 1 0 0 ] , c o n t r o l =0 ,n =0; while ( f s c a n f ( o r i g e n , " %d " , &numeros [ c o n t r o l ] ) ! = EOF ) { c o n t r o l ++; } q s o r t ( numeros , c o n t r o l , s i z e o f ( i n t ) , compare ) ; f o r ( n =0; n< c o n t r o l ; n + + ) { p r i n t f ( " %d " , numeros [ n ] ) ; } /∗ Cierra los archivos ∗/ fclose ( origen ) ; return 0; } 3 UNIVERSIDAD DE COSTA RICA ESCUELA DE INGENIERÍA ELÉCTRICA PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117 Francisco Molina Castro - B14194 LABORATORIO 14 - I CICLO 2012 Este nos da algunos resultados como: 4