Andres Mora Zúñiga Carné: b14463 Laboratorio 14 Parte 1 En esta

Anuncio
Andres Mora Zúñiga
Carné: b14463
Nota: 100
Laboratorio 14
Parte 1
En esta sección solicitaban crear una función que permitiera pasar de un char a un float. El parseo debía
de manejar errores y aceptar que el float se escribiera de diferentes maneras, fuera aceptado, y el
programa no se cayera. Las formas en las que se podía introducir son:
•
•
•
•
•
•
20
20.5
.5
-20
-20.5
-.5
Logré llevar acabo la tarea y el algoritmo que terminé utilizando es el siguiente:
float parseo(char *numero) {
float resultado;
if (isdigit(numero[0]) != 0 || numero[0] == '.' || numero[0] == '-'){
if(numero [0] == '.' && numero[1] == '\0' || numero[0] == '-' && numero[1] == '\0'){
printf("Lo que ingreso no es un numero\n");
exit(1);
}
else{
resultado = atof(numero);
printf("El numero que ingreso es: %.3f\n", resultado);
return resultado;
}
}
else{
printf("Lo que ingreso no es un numero\n");
exit(1);
}
}
Funciona de la siguiente manera, recibe un array de chars. El primer if es el filtro de letras, lo que hace
es ver que el numero solo contenga dígitos, y que pueda empezar con “–“ o “.” . De ser así, pasa al
siguiente if, si contiene letras, el programa dice que no es un numero y se sale.. El siguiente if es por si
el usuario solo ingreso “-” o “.”. Si esto es así, el programa le dice que no es un numero y se sale. Si el
primer char de cada array es “-” o “.”, pero tiene mas contenido, continua el proceso y se empieza el
parseo. El parseo finaliza y se devuelve el valor convertido en float.
Al final del programa realizo una suma para ver que efectivamente el valor ha sido convertido en float,
porque de seguir siendo un char, no se podria sumar.
Parte 2
Esta sección solicitaba un programa que fuera capaz de abrir un archivo escribiendo el nombre del
archivo mediante la entrada por línea de comandos. El archivo era de un número por línea, y el
programa sería capaz leerlo, acomodar los números de manera ascendente e imprimirlos en la consola.
El codigo para abrir el archivo se ve así:
FILE *puntero;
puntero = fopen(argv[1] , "r");
Donde puntero es lo que me permite abrir y moverme dentro del archivo para irlo leyendo.
Luego se planteaba un if, el if era el encargada de ver si el archivo fue abierto con éxito o tuvo algun
error, de tener un error de apertura, el programa lo informa y se cierra, de lo contrario, continua con la
lectura de datos. Dicho IF se ve así:
if (puntero == NULL){
printf("Hubo un error al abrir el archivo, el archivo no existe\n");
exit(1);
}
else{
printf("\nEl contenido del archivo es:\n\n");
…}
Se aprecia que si el puntero no apunta a nada, se cierra y de lo contrario se procede a ver el contenido
del archivo.
Se lee el archivo y se almacena dentro de un vector que contiende arrays de chars.
while (feof(puntero) == 0){
if(feof(puntero) != 0){}
else{
fgets(contenido, 100, puntero);
num[i] = contenido;
i++;
}
Finalmente se realiza el acomodo de los números utilizando el “método de la burbuja” y se procede a
imprimir los números ordenados ascendentemente en la consola con un printf().
Descargar