3
#include<stdio.h> #include<stdlib.h> #include<string.h> #define NPROD 6 #define NPRUEBAS 8 #define MAXCAD 81 /* Escribir la función leer_datos */ int leer_datos(char cod[NPROD][5], int pruebas[NPROD][NPRUEBAS]) { FILE *pf; int i,j; pf=fopen("res.txt","r"); if(pf==NULL) return -1; for(i=0;i<NPROD;i++) { /*lectura de código*/ fscanf(pf,"%s",cod[i]); /*lectura de pruebas*/ for(j=0;j<NPRUEBAS;j++) fscanf(pf,"%d",&pruebas[i][j]); } fclose(pf); return 0; } /* Función que indica la última posición en que se encuentra un carácter en una cadena */ int ult_pos_car(char cad[], char car) { int pos = -1, i; for (i=0; i<strlen(cad); i++) if (cad[i] == car) pos = i; return pos; } /* Escribir la función listar_claves */ /* La clave de un producto se compone de la primera y última letra de su nombre comercial y de la primera y última cifra de su código */ int listar_claves() { FILE *pf; char cad[MAXCAD]; int pos; pf=fopen("productos.txt","r"); if(pf==NULL) return -1; printf("\nCodigos - Claves:\n"); while (fgets(cad, MAXCAD, pf) != NULL) { pos = ult_pos_car(cad, ' '); if (pos == -1) return -1;

codigof1D

Embed Size (px)

DESCRIPTION

Codigo C

Citation preview

#include<stdio.h>#include<stdlib.h>#include<string.h>

#define NPROD 6#define NPRUEBAS 8#define MAXCAD 81

/* Escribir la función leer_datos */int leer_datos(char cod[NPROD][5], int pruebas[NPROD][NPRUEBAS]){ FILE *pf; int i,j; pf=fopen("res.txt","r"); if(pf==NULL) return -1; for(i=0;i<NPROD;i++) { /*lectura de código*/ fscanf(pf,"%s",cod[i]); /*lectura de pruebas*/ for(j=0;j<NPRUEBAS;j++) fscanf(pf,"%d",&pruebas[i][j]); } fclose(pf); return 0;}

/* Función que indica la última posición en que se encuentra un carácteren una cadena */int ult_pos_car(char cad[], char car){

int pos = -1, i;

for (i=0; i<strlen(cad); i++) if (cad[i] == car) pos = i; return pos;

}

/* Escribir la función listar_claves *//* La clave de un producto se compone de la primera y última letra de su nombrecomercial y de la primera y última cifra de su código */int listar_claves(){ FILE *pf; char cad[MAXCAD]; int pos; pf=fopen("productos.txt","r"); if(pf==NULL) return -1; printf("\nCodigos - Claves:\n"); while (fgets(cad, MAXCAD, pf) != NULL) { pos = ult_pos_car(cad, ' '); if (pos == -1) return -1;

printf("Codigo: %c%c%c%c -- ", cad[pos+1], cad[pos+2], cad[pos+3], cad[pos+4]); printf("Clave: %c%c%c%c\n", cad[0], cad[pos-1], cad[pos+1], cad[pos+4]);

}

fclose(pf); return 0;}

/* Escribir la función listar_puntuacion *//* la puntuación de cada producto es la media de sus dos mejores resultados */void listar_puntuacion(char cod[NPROD][5], int pruebas[NPROD][NPRUEBAS]){

int i, j, m1, m2;

printf("\nCodigos - Puntuacion:\n");

for (i=0; i<NPROD; i++){/* Buscar posición del mejor resultado */m1=0;for (j=1; j<NPRUEBAS; j++) if (pruebas[i][j]>pruebas[i][m1]) m1 = j;/* Buscar posición del segundo mejor resultado */if (m1 == 0) m2 = 1;else m2 = 0;for (j=1; j<NPRUEBAS; j++) if (j!=m1 && pruebas[i][j]>pruebas[i][m2]) m2 = j; printf("Codigo: %s -- Puntuacion: %.2f\n", cod[i], (pruebas[i][m

1]+pruebas[i][m2]) / 2.0);}

}

int main(){ /* Declaración de variables */ int mpruebas[NPROD][NPRUEBAS];

char mcod[NPROD][5]; /* Llamada a leer datos */ /* Terminar el programa si la lectura es incorrecta */ if(leer_datos(mcod, mpruebas)){ printf("Error al abrir fichero res.txt\n"); system("PAUSE"); return 0; } /* Llamada a listar_claves */ /* Terminar el programa si la lectura es incorrecta */ if (listar_claves()) { printf("Error en fichero productos.txt\n"); system("PAUSE"); return 0; } /* Llamada a listar_puntuacion */ listar_puntuacion(mcod, mpruebas);

system("PAUSE"); return 0;}