Fuentes -10 Entrega extemporánea -30 Nota: 60 Laboratorio 14 Daniel Méndez Zeledón A83911 Resumen Este laboratorio se basa en los arreglos, las cadenas de caracteres, las entradas y las salidas. Primero, se nececitaba tomar una cadena de caracteres, esta si era un numero valido para la conversion depunto flotante, se convertia a float con unas instrucciones, sino se debia mandar un mensaje de error. En el punto dos, se pedia tomar un archivo con numeros por linea, se lee el archivo y se ordenaba ascendentemente. 1. Cadena y conversion En esta parte del laboratorio, se solicita una cadena de caracteres. Se sabe que todos los datos tienen al final de cada palabra un backslash 0, por tanto simplemente se hace un while mientras no se llegue a ese final de la palabra. Se crea una variable char la cual se va a ir revisando numero por numero dentro del mismo while, al final de cada verificacion de caracter, se incrementa en 1 el valor que itera entre cada caracter para revisarlo, si no es un float, entonces se manda un mensaje de error. Finalmente, una vez revisado que efectivamente puede ser un float, se convierte con la funcion atof, finalmente se imprime y se hace una suma para comprobar que se puede usar el numero como float. A continuacion se muestra el programa, ademas de la prueba correspondiende en la Figura 1, en esta muestra la ejecucion del programa con varias cadenas distintas : #i n c l u d e #i n c l u d e #i n c l u d e #i n c l u d e <s t d i o . h> <c t y p e . h> < s t d l i b . h> <s t r i n g . h> i n t main ( ) { f l o a t x =15; c h a r cadena [ 1 0 0 ] ; p r i n t f ( ” I n t r o d u c e tu cadena de c a r a c t e r e s : ” ) ; s c a n f (” %s ” , cadena ) ; // p r i n t f ( ” Cadena : %s \n ” , cadena ) ; // p r i n t f ( ” cadena5: %c \n ” , cadena [ 5 ] ) ; i n t i =0; w h i l e ( cadena [ i ] != ’ \ 0 ’ ) { i f ( cadena [ i ] != ’ 1 ’ && cadena [ i ] != ’ 2 ’ && cadena [ i ] != ’ 3 ’ && 1 Figura 1: Prueba Cadena de Caracteres cadena [ i ] != ’ 4 ’ && cadena [ i ] != cadena [ i ] != ’ 7 ’ && cadena [ i ] != cadena [ i ] != ’ . ’ && cadena [ i ] != cadena [ i ] != ’ − ’) { p r i n t f ( ” Problema , algun c a r a c t e r return 0; ’ 5 ’ && cadena [ i ] != ’ 6 ’ && ’ 8 ’ && cadena [ i ] != ’ 9 ’ && ’ , ’ && cadena [ i ] != ’ 0 ’ && no e s p a r t e d e l t i p o f l o a t \n ” ) ; } i=i +1; }// f i n w h i l e ∗/ f l o a t f l o t a n t e=a t o f ( cadena ) ; p r i n t f (” % f ” , f l o t a n t e ) ; p r i n t f (” % f ” , f l o t a n t e+x ) ; } 2. Ordenamiento de los valores de un archivo Para la segunda parte del laboratorio, se va a tomar un archivo con numeros, uno por linea hasta un maximo de 100. Le decimos al usuario que nos diga el nombre del archivo, este lo cuardamos en una variable y con la funcion fopen abrimos el archivo. Seguidamente tomamos una variable tamano la cual nos va a decir el tamaño total del archivo, pero seteado con un default de 100. Entramos a 2 un for el cual nos va ir iterando entre cada linea del archivo, estos valores que vamos obteniendo los vamos guardando en un vector el cual luego ordenaremos. Si se llega al final del archivo, se hace un break para que el no llegue a leer las 100 lineas, en caso de que fuesen menos. Por ultimo se hace un algoritmo de Bubble Sort con los valores del vector para ordenar los numeros, esto con 2 for, uno que me indique las veces que he subido por el vector y otra que me cuente por cual palabra del vector voy analizando. Luego se imprime todo el vector. Aca se muestra como se implemento el codigo y las pruebas se ven en la Figura 2 donde se muestra el archivo original y el programa ejecutado: #i n c l u d e <s t d i o . h> #i n c l u d e <s t r i n g . h> ///# d e f i n e tamano 100 i n t main ( ) { i n t tamano =100; FILE ∗ f p 1 ; i n t i , j , k ,m, temp ; f l o a t A[ tamano ] ; int c ; char a r c h i [ 5 0 ] ; p r i n t f ( ” I n d i q u e e l nombre d e l a r c h i v o : \ n−−>”); // s c a n f (” %s ”,& a r c h i ) ; s c a n f (” %50 s ” , a r c h i ) ; fp1 = fopen ( archi , ” r ” ) ; // Abrimos e l a r c h i v o f o r ( i =0; i <tamano ; i ++) // I t e r a m o s i , j para i r almacenando l o s v a l o r e s { f s c a n f ( fp1 , ” %f ” , &A[ i ] ) ; // Leemos un f l o a t y l o guardamos en A i f ( f e o f ( fp1 )){ // s i e s e l f i n d e l a r c h i v o hace un break tamano=i ; break ; }// f i n i f (A [ 0 ] == ’ ’ ) } // o r d e n a c i o n Metodo burbuja f o r ( k = 0 ; k < ( tamano − 1 ) ; k++) { f o r (m = k + 1 ; m < tamano ; m++) { i f (A[m] < A[ k ] ) { temp = A[m] ; A[m] = A[ k ] ; A[ k ] = temp ; 3 Figura 2: Prueba Ordenamiento de una lista de numeros } } } p r i n t f ( ” El a r r e g l o queda ordenado a s f o r ( j =0; j <tamano ; j ++) p r i n t f (” %.2 f \n ” , A[ j ] ) ; f c l o s e ( fp1 ) ; return 0; } 4 \n ” ) ;