Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Array
Binary file not shown.
35 changes: 35 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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"
Binary file added Práctica 2 TDA preLab.pdf
Binary file not shown.
35 changes: 35 additions & 0 deletions main.c
Original file line number Diff line number Diff line change
@@ -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;
}
57 changes: 57 additions & 0 deletions modelo.c
Original file line number Diff line number Diff line change
@@ -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;
}
25 changes: 25 additions & 0 deletions modelo.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

/* 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 */
19 changes: 19 additions & 0 deletions vista.c
Original file line number Diff line number Diff line change
@@ -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);
}