diff --git a/Array b/Array new file mode 100644 index 0000000..06facc1 Binary files /dev/null and b/Array differ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..292d1d0 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +#Makefile para compilar todos los programas + +# targets que no generan files +.PHONY = all CLEAN + +#Variables: +CC = gcc +world := hola #variable estatica +CFLAGS = -C0 -s -lm +linkers = -lm -lpthread + +#Functions +deps = $(wildcard *.c) #dependencias +depsh = $(wildcard *.h) +BINS = $(deps: %.c = %.o) + + +all: ${BINS} Array + + +BINS: $(deps) + ${CC} -c $^ ${CFLAGS} + @echo "Generating binary objects" + + +Array: ${BINS} + ${CC} -o $@ $^ ${linkers} + @echo "Generating excecutable" + +PRINT: + @echo $(deps) $(BINS) + +CLEAN: + rm -rvf *.o TEST_ARRAY + @echo "Removing all binary objects and excecutables" diff --git "a/Pr\303\241ctica 2 TDA preLab.pdf" "b/Pr\303\241ctica 2 TDA preLab.pdf" new file mode 100644 index 0000000..53e8a5c Binary files /dev/null and "b/Pr\303\241ctica 2 TDA preLab.pdf" differ diff --git a/main.c b/main.c new file mode 100644 index 0000000..8797442 --- /dev/null +++ b/main.c @@ -0,0 +1,35 @@ +/* + * Práctica 2: DataShell + * @copyright TDA 2021 + * @license as you wish + * @author Team D + *@Oliva Lopéz Yesenia Guadalupe, Vergara Mendoza Monica Ivette + * @version 01/03/2021 +*/ + +#include "modelo.h" + +int main(int argc, char const *argv[]) { + FILE *fp; + char nombre [50]; + int filas=0; + int col=0; + + ReadCsv (nombre); + fp = fopen (nombre,"rt"); + if (fp == NULL) { + printf("El archivo no existe.\n"); + exit (1); + } + + DatosCsv (fp,&filas,&col); + fclose (fp); + + float datos[filas][col]; + fp = fopen (nombre,"rt"); + AlmacenarCsv (fp,filas,col,datos); + fclose (fp); + ImprimirArreglo (filas,col,datos); + ImprimirEstado(filas,col); + return 0; +} diff --git a/modelo.c b/modelo.c new file mode 100644 index 0000000..068d810 --- /dev/null +++ b/modelo.c @@ -0,0 +1,57 @@ +#include "modelo.h" + +int ReadCsv (char *nombre){ + printf("Ingresa el nombre del archivo csv: "); + scanf("%s",nombre); + return 0; +} + +int DatosCsv (FILE *fp, int *filas, int *col){ + char cadena [255]; + int i=0; //Contador, avanza la cadena carcater por carcater + //Obtener columnas y recorrer línea por línea + while (fgets (cadena,255,fp) != NULL) { + if (*filas == 0) { + while (cadena [i] != '\n') { + if (cadena [i] == ',') { //Si caracter=',' existe una columna + (*col) = (*col) + 1; + } + i++; //Avanza al siguiente caracter + } + (*col) = (*col) + 1; //Agrega una columna + } + (*filas) = (*filas) + 1; //Agrega una fila + } + return 0; +} + +int AlmacenarCsv (FILE *fp, int filas, int col, float datos[filas][col]){ + char cadena [255]; + char *n; //Guarda el dato obtenido del strtok + int f=0,c=0; + float num=0; + + while (fgets (cadena,255,fp) != NULL) { + //Es el primer dato, inicio de conversión a "float" + n = strtok (cadena,","); + + //Validar que los datos leídos sean números + while (n != NULL) { + for (size_t k = 0; k < strlen(n); k++) { + if (n[k] < '.' && n[k] >= ' ' || n[k] > '.' && n[k] < '0'|| n[k] > '9') { + printf("Formato no admitido.\n"); + exit (0); + } + } + + //Conversión a float + num=strtof(n,NULL); + datos [f][c] = num; + n=strtok (NULL,","); + c++; + } + c=0; + f++; + } + return 0; +} diff --git a/modelo.h b/modelo.h new file mode 100644 index 0000000..f9835cf --- /dev/null +++ b/modelo.h @@ -0,0 +1,25 @@ +#include +#include +#include +#include + +/* inicio estructura array_h */ +#ifndef array_h +#define array_h + +#ifdef array_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + +EXTERN int ReadCsv (char *nombre); +EXTERN int DatosCsv (FILE *fp, int *filas, int *col); +EXTERN int AlmacenarCsv (FILE *fp, int filas, int col, float datos [filas][col]); +EXTERN int ImprimirArreglo (int filas, int col,float datos [filas][col]); +EXTERN int ImprimirEstado (int filas, int col); + +#undef array_IMPORT +#undef EXTERN + +#endif /* fin files_h */ diff --git a/vista.c b/vista.c new file mode 100644 index 0000000..894ce99 --- /dev/null +++ b/vista.c @@ -0,0 +1,19 @@ +#include "modelo.h" + +int ImprimirArreglo(int filas, int col, float datos[filas][col]){ + printf("Los datos del areglo son: \n"); + for (int i = 0; i < filas; i++) { + printf("|"); + for (int j = 0; j < col; j++) { + printf("%f\t|\t",*((*(datos+i))+j)); + } + printf("\n"); + } + return 0; +} + +int ImprimirEstado(int filas, int col){ + printf("\tEstado del archivo:\n"); + printf("\tNumero de filas: %d\n",filas); + printf("\tNumero de columnas: %d\n",col); +}