// COURS_25/01/2003 : gestion de fichiers
#include "stdio.h"
#include "stdafx.h"
#include <string.h>
struct cel
{ int info;
cel *voisin;
};
struct cel *tliste, *fliste;
struct cel *surf, *surf_avant;
int i;
int i_mini=0,i_maxi=0;
char *pcA ="Ajouter un element au debut";
char *pcF ="Ajouter un nouvel element en fin de liste";
char *pcR ="Rechercher un element dans la liste";
char *pcS ="Supprimer un element de la liste";
char *pcL ="Afficher les elements de la liste";
char *pcT ="Trier les elements de la liste";
char *pcEnr ="Enregistrer les elements de la liste";
char *pcCharger ="Charger les elements de la liste";
int nb_options =8;
char tab_valopt [8]={'a','f','r','s','l','t','e','c'};
char *tab_options [8]={pcA,pcF,pcR,pcS,pcL,pcT,pcEnr,pcCharger};
void Ajouter_en_tete() {
printf("\nSaisir une nouvelle donnée :");
surf=new cel;
scanf("%i",&surf->info);
getchar();
surf->voisin=NULL;
if (fliste==NULL) {fliste=surf;};
surf->voisin=tliste;
tliste = surf;
};
void Ajouter_en_fin() {
printf("\nSaisir une nouvelle donnée :");
surf=new cel;
scanf("%i",&surf->info);
getchar();
surf->voisin=NULL;
if (tliste==NULL)
{tliste=surf;}
else
{
fliste->voisin = surf;
};
fliste=surf;
};
void Rechercher_un_element() {
int rech=0;
i=1;
printf("\nSaisir une valeur à chercher :");
scanf("%i",&rech);
getchar();
surf=tliste;
while (surf!=NULL)
{
if (surf->info==rech) {printf("\n -> trouvé à l'index %i",i);};
i++;
surf=surf->voisin;
};
};
void Afficher_les_elements() {
i_mini=0;
i_maxi=0;
if (tliste==NULL) {printf("\n-- la liste est vide --");}
else
{
surf=tliste;
i=1;
i_mini=i;
while (surf != NULL)
{
printf("\n %ieme element de la file %i",i,surf->info);
surf=surf->voisin;
i_maxi=i;
i++;
};
};
};
void Supprimer_un_element() {
int rech = 0;
Afficher_les_elements();
if (i_mini!=0)
{
printf("\nDonnez l'index de l'element à supprimer :");
printf("\nentre %i et %i :",i_mini, i_maxi);
scanf("%i",&rech);
getchar();
if ((rech<i_mini)||(rech>i_maxi))
{printf("\n *** index hors limites ***");}
else
{printf("\nsuppression en cours");
i=1;
surf=tliste;
surf_avant=NULL;
while (i<rech)
{printf("\n %ieme element de %i de la file %i",i,rech,surf->info);
surf_avant=surf;
surf=surf->voisin;
i++;
};
printf("\n A SUPPRIMER :");
printf("\n %ieme element de %i de la file %i",i,rech,surf->info);
if (rech==i_mini) { tliste=surf->voisin;}
else
{
if (rech==i_maxi) { fliste=surf_avant; surf_avant->voisin=NULL; }
else
{ surf_avant->voisin=surf->voisin;};
};
};
};
};
void Trier_les_elements()
{
};
void exo1 ()
{int i;
char x;
for (i=0;i<6;i++)
{
printf("\nDonner la valeur de x ? :");
x=getchar ();getchar();
switch(x)
{
case 'a':
case 'A': printf("\n Traitement A \n");break;
case 'b':
case 'B': printf("\n Traitement B \n");break;
case 'i':
case 'I': printf("\n Traitement I \n");break;
case 'n':
case 'N': printf("\n Traitement N \n");break;
default:printf("Traitement par defaut: \n");
}
}
};
char majuscule(char valeur)
{
return (valeur-32);
};
void affiche_valopt(int index_tab_valopt)
{
printf("\n %c (%c) - %s",tab_valopt[index_tab_valopt],majuscule(tab_valopt[index_tab_valopt]),tab_options[index_tab_valopt]);
};
char exo2_menu()
{ char choix = 'o';
printf("\n\n================================");
printf("\nOperations sur liste dynamique :");
printf("\n================================");
for (i=0;i<=(nb_options-1);i++)
{
affiche_valopt(i);
};
printf("\n Q (q) - Quitter l'application");
printf("\nEntrez votre choix :");
choix=getchar(); getchar();
return choix;
};
bool affiche_option_choisie(char choix)
{
bool trouve=false;
for (i=0;((i<=(nb_options-1)));i++)
{
if ((choix==tab_valopt[i])||(choix==(majuscule(tab_valopt[i]))))
{
trouve=true;
affiche_valopt(i);
}
};
if (!trouve)
{
printf(" ***** choix invalide : %c",choix);
};
return trouve;
};
void exo2()
{
tliste=NULL;
fliste=NULL;
char choix='o';
choix=exo2_menu();
while ((choix!='q')&&(choix!='Q'))
{
if (affiche_option_choisie(choix))
{
switch (choix)
{
case 'a': case 'A' : Ajouter_en_tete();
break;
case 'f': case 'F' : Ajouter_en_fin();
break;
case 'r': case 'R' : Rechercher_un_element();
break;
case 's': case 'S' : Supprimer_un_element();
break;
case 'l': case 'L' : Afficher_les_elements();
break;
case 't': case 'T' : Trier_les_elements();
break;
default: printf(" ***OPTION NON PROGRAMEE ***");
break;
};
};
choix=exo2_menu();
};
};
void exo3()
{
FILE *pf;
char *chaine;
chaine=NULL;
pf=fopen("data.txt","r");
printf("\nfichier ouvert");
if (!pf==NULL)
{
while (!(feof(pf)))
{
fscanf(pf,"%s",&chaine);
printf("\n %s",&chaine);
};
}
else
{printf("pb acces au fichier");};
fclose(pf);
pf=NULL;
};
void main()
{
printf("\nDebut programme");
exo3();
printf("\nFin programme\n");
}