Laboratorio 14

Anuncio
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 ” ) ;
Descargar