parent
b188765fab
commit
1c6d76ffac
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,6 @@
|
||||
acsi1 4 analyse et conception
|
||||
algo1 4 algorithme périodique 1
|
||||
algo2 4 algorithme périodique 2
|
||||
based 4 base de données
|
||||
maths 2 mathématiques
|
||||
organ 2 organisation
|
@ -0,0 +1,21 @@
|
||||
#include "tp12.h"
|
||||
|
||||
void testCharge(void)
|
||||
{
|
||||
Mat *tab[50];
|
||||
int nb;
|
||||
char nomFich[20];
|
||||
printf("Donnez le nom du fichier :\n");
|
||||
scanf("%s", nomFich);
|
||||
nb = chargeFmatieres(nomFich, tab, 50);
|
||||
if(nb < 0)
|
||||
return;
|
||||
afficheTmat(tab, nb);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
//testCharge();
|
||||
global();
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,146 @@
|
||||
#include "tp12.h"
|
||||
|
||||
int chargeFmatieres(char *nomFich, Mat **tmat, int tmax)
|
||||
{
|
||||
int i = 0;
|
||||
Mat m;
|
||||
FILE *flot;
|
||||
printf("%d\n", i);
|
||||
flot = fopen(nomFich, "r");
|
||||
if(flot == NULL)
|
||||
{
|
||||
printf("Pb d'ouverture du fichier %s.\n", nomFich);
|
||||
return -1;
|
||||
}
|
||||
m = lireMat(flot);
|
||||
while(!feof(flot))
|
||||
{
|
||||
if(i == tmax)
|
||||
{
|
||||
printf("tbl plein !!!\n");
|
||||
fclose(flot);
|
||||
return -2;
|
||||
}
|
||||
tmat[i] = (Mat *)malloc(sizeof(Mat));
|
||||
if(tmat[i] == NULL)
|
||||
{
|
||||
printf("Pb du tableau !\n");
|
||||
fclose(flot);
|
||||
return -3;
|
||||
}
|
||||
*tmat[i] = m;
|
||||
i = i +1;
|
||||
m = lireMat(flot);
|
||||
}
|
||||
fclose(flot);
|
||||
return i;
|
||||
}
|
||||
|
||||
Mat lireMat(FILE *flot)
|
||||
{
|
||||
Mat m;
|
||||
fscanf(flot, "%s%d", m.code, &m.coef);
|
||||
fgets(m.design, 30, flot);
|
||||
m.design[strlen(m.design)-1] = '\0';
|
||||
return m;
|
||||
}
|
||||
|
||||
void afficheMat(Mat m)
|
||||
{
|
||||
printf("%s\t%d\t%s\n", m.code, m.coef, m.design);
|
||||
}
|
||||
|
||||
void afficheTmat(Mat **tMat, int nbmat)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < nbmat; i++)
|
||||
afficheMat(*tMat[i]);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void libereEspaceA(Mat *tmat[], int nb)
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < nb; i++)
|
||||
free(tmat[i]);
|
||||
}
|
||||
|
||||
void sauvTbin(Mat *tab[], int nb)
|
||||
{
|
||||
int i;
|
||||
FILE *flot;
|
||||
flot = fopen("matieres.bin", "wb");
|
||||
if(flot == NULL)
|
||||
{
|
||||
printf("Pb d'ouverture du fichier matieres.bin");
|
||||
return;
|
||||
}
|
||||
fprintf(flot, "%d\n", &nb);
|
||||
for(i = 0; i < nb; i++)
|
||||
fwrite(tab[i], sizeof(Mat), 1, flot);
|
||||
fclose(flot);
|
||||
}
|
||||
|
||||
int rechdich(char *code, Mat **tmat, int nbmat, int *trouve)
|
||||
{
|
||||
int inf, sup, m;
|
||||
inf = 0;
|
||||
sup = nbmat -1;
|
||||
while(inf <= sup)
|
||||
{
|
||||
m = (inf + sup)/2;
|
||||
if(strcmp(code, tmat[m]->code) == 0)
|
||||
{
|
||||
*trouve = 1;
|
||||
return m;
|
||||
}
|
||||
if(strcmp(code, tmat[m]->code) < 0)
|
||||
sup = m - 1;
|
||||
else inf = m+ 1;
|
||||
}
|
||||
*trouve = 0;
|
||||
return inf;
|
||||
}
|
||||
|
||||
int supprime(Mat **tMat, int nbmat)
|
||||
{
|
||||
char code[6], rep;
|
||||
int pas, trouve, i;
|
||||
printf("Donnez le code de la matière à supprimer :\n");
|
||||
scanf("%s%*c", code);
|
||||
pas = rechdich(code, tMat, nbmat, &trouve);
|
||||
if(trouve == 0)
|
||||
printf("Aucune matière n'as été trouvé\n");
|
||||
else{
|
||||
afficheMat(*tMat[pas]);
|
||||
printf("Vouez vous vraiment supprimer ? :\n");
|
||||
scanf("%c", &rep);
|
||||
if(rep == 'o')
|
||||
{
|
||||
free(tMat[pas]);
|
||||
for(i = pas; i < nbmat-1; i++)
|
||||
tMat[i] = tMat[i + 1];
|
||||
nbmat = nbmat - 1;
|
||||
}
|
||||
}
|
||||
return nbmat;
|
||||
}
|
||||
|
||||
void global(void)
|
||||
{
|
||||
Mat *tab[50];
|
||||
int nb;
|
||||
char nomFich[20];
|
||||
printf("Donnez le nom du fichier :\n");
|
||||
scanf("%s", nomFich);
|
||||
nb = chargeFmatieres(nomFich, tab, 50);
|
||||
if(nb < 0)
|
||||
return;
|
||||
afficheTmat(tab, nb);
|
||||
nb = supprime(tab, nb);
|
||||
afficheTmat(tab, nb);
|
||||
nb = supprime(tab, nb);
|
||||
afficheTmat(tab, nb);
|
||||
sauvTbin(tab, nb);
|
||||
libereEspaceA(tab, nb);
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef struct {
|
||||
char code[6];
|
||||
int coef;
|
||||
char design[32];
|
||||
} Mat;
|
||||
|
||||
int chargeFmatieres(char *nomFich, Mat **tmat, int tmax);
|
||||
void global(void);
|
||||
Mat lireMat(FILE *flot);
|
||||
void afficheMat(Mat m);
|
||||
void afficheTmat(Mat **tMat, int nbmat);
|
||||
void libereEspaceA(Mat *tmat[], int nb);
|
||||
void sauvTbin(Mat *tab[], int nb);
|
||||
int rechdich(char *code, Mat **tmat, int nbmat, int *trouve);
|
||||
int supprime(Mat **tMat, int nbmat);
|
||||
void testCharge(void);
|
Binary file not shown.
Loading…
Reference in new issue