Les fichiers en (c)
Résolu/Fermé
braveheart19.28
-
17 déc. 2010 à 23:02
breaveheart19_28 Messages postés 6 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 19 décembre 2010 - 19 déc. 2010 à 21:56
breaveheart19_28 Messages postés 6 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 19 décembre 2010 - 19 déc. 2010 à 21:56
A voir également:
- Les fichiers en (c)
- Renommer plusieurs fichiers en même temps - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
- Fichiers epub - Guide
6 réponses
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
18 déc. 2010 à 02:12
18 déc. 2010 à 02:12
Bonsoir,
c'est un projet tout entier que tu nous demande d'analyser, et il y a peu de chances que tu trouves, sur ce forum ou un autre, quelqu'un qui prenne le temps de le faire.
Commence par essayer d'isoler le problème. Tu dis être débutante en programmation, il faut apprendre également à chasser les bugs, ça fait partie du métier ;)
c'est un projet tout entier que tu nous demande d'analyser, et il y a peu de chances que tu trouves, sur ce forum ou un autre, quelqu'un qui prenne le temps de le faire.
Commence par essayer d'isoler le problème. Tu dis être débutante en programmation, il faut apprendre également à chasser les bugs, ça fait partie du métier ;)
K-Jah94
Messages postés
4
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
18 décembre 2010
18 déc. 2010 à 02:37
18 déc. 2010 à 02:37
Télécharge Linux, si tu utilise gcc il te montrera la ligne de tes erreurs. Ou utilise un compilateur qui fait de meme tout simplement.
Car la c'est trop long.
Car la c'est trop long.
breaveheart19_28
Messages postés
6
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
19 décembre 2010
18 déc. 2010 à 13:16
18 déc. 2010 à 13:16
merci K-jah94
je vais essayer de rendre mon prog moins long
en espérant de trouver une personne qui va me répondre
merci bcp
je vais essayer de rendre mon prog moins long
en espérant de trouver une personne qui va me répondre
merci bcp
breaveheart19_28
Messages postés
6
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
19 décembre 2010
Modifié par breaveheart19_28 le 18/12/2010 à 13:10
Modifié par breaveheart19_28 le 18/12/2010 à 13:10
merci groarh
la plupart du temps lorsque j'ai ecrit mon prog j'ai fait copier coller
meme la logique que j'ai utilisé et trop facile à comprendre
mais c pas grave
merci groarh une autre fois
la plupart du temps lorsque j'ai ecrit mon prog j'ai fait copier coller
meme la logique que j'ai utilisé et trop facile à comprendre
mais c pas grave
merci groarh une autre fois
breaveheart19_28
Messages postés
6
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
19 décembre 2010
Modifié par breaveheart19_28 le 18/12/2010 à 20:33
Modifié par breaveheart19_28 le 18/12/2010 à 20:33
j'ai supprimer les vérification de la date
et je l'ai rendu moins long
mais tjrs il y a le meme probleme
je ne sais pas pourquoi il n'ecrit pas dans le fichier
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct temp_ville
{
char ville [50];
int date [100];
int temp [100];
int pos ;/* la derniere position occupée*/
};
struct bloc
{
struct temp_ville val;
struct bloc *suiv;
};
typedef struct bloc bloc;
int main()
{
bloc *tete=NULL;
bloc *p=NULL ,*k=NULL;
bloc *t=NULL ,*h=NULL,*queue=NULL;
FILE *fichier;
char nomfichier[50];
char tab[50];
int i,j,a,c,arret=0,trouv=0,supprime=0,entree=0;
while(!arret)
{
arret=0;
p=malloc(sizeof(bloc));
p->val.pos=0;
if(p!=NULL)
{
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",p->val.ville);
printf ("\n veuillez introduire la date svp: (la date doit etre sous le format 12122010 par exemple)");
scanf("%d",p->val.date[0]);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",p->val.temp[0]);
if(tete==NULL)
{
tete=p;
p->suiv=NULL;
queue=tete;
}else
{
queue->suiv=p;
p->suiv=NULL;
queue=p;
}
printf("\n voulez-vous inserer une autre fois?(0 pour oui 1 pour non)");
scanf("%d",&arret);
if (!arret)
{
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
/*****vérifiant si la ville qu'il vient d'inserer existe déja dans l'un des blocs******/
while ((p!=NULL) && (!trouv))
{
if(strcmp(tab,p->val.ville)==0) /*****si elle existe****/
{
if (p->val.pos<99) /*****on vérifie s'il y a de la place pour l'inserer*****/
{
trouv=1; /*pour arreter la recherche*/
p->val.pos++;
printf ("\n veuillez introduire la date svp: ");
scanf("%d",p->val.date[p->val.pos]);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",p->val.temp[p->val.pos]);
}
}
/****dans le cas où il y a ++ blocs qui contiennent les enregisterement de la meme ville******/
p=p->suiv;
};
}
}
}/********si la ville n'a pas été inserée avant où dans le cas où tt les
blocs de cette ville étaient pleins,on reboucle et on crée un nouveau bloc
en faisant le chainage(au niveau de la queue)************/
/***************ecriture dans le fichier**************/
printf("entrer le nom du fichier svp : ");
scanf("%s",nomfichier);
fichier=fopen(nomfichier,"wb");
if (fichier!=NULL)
{
fprintf(fichier,"\n\t **** les temperatures des villes inserées *****");
p=tete;
while(p!=NULL)
{
fprintf(fichier,"\n________________________________________________________________");
fprintf(fichier,"\n| ville : | %s |",p->val.ville);
fprintf(fichier,"\n|__________|____________________________________________________|");
for(i=0;i<=p->val.pos;i++)
{ /*supposons qu'on a 12122010 ***/
c=(p->val.date[i]/1000000); /*on obtient le jour 12*/
a=(p->val.date[i]%1000000);
fprintf(fichier,"\n|date :| %d / ",c);/****|date :| 12/ *****/
c=(a/10000);
fprintf(fichier," %d / ",c); /***| date :|12/12/ **********/
c=(a/10000);
fprintf(fichier," %d / ",c); /*** |date :| 12/12/2010 |*******/
a=a%10000;
fprintf(fichier," %d | ",a);
fprintf(fichier,"temperature: | %d",p->val.temp[i]);
fprintf( fichier,"\n| ____________________________________________________________________|");
}
p=p->suiv;
};
}
fclose(fichier);
/**************supprission d'une ville*****************/
while(!supprime)
{
printf("voulez-vous supprimer tous les enregistrements d'une ville?(tapez 0 pour oui 1 pour non) ");
scanf("%d",&supprime);
if (supprime==0)
{
printf("donnez le nom de la ville a supprimer");
scanf("%s",tab);
p=tete;
while(p!=NULL)
{
if (strcmp(p->val.ville,tab)==0)
{
t=p->suiv;
free(p);
h->suiv=t;
}
h=p;
p=p->suiv;
}
}
};
/*********************ajouter un enregistrement***************/
arret=0;
while (!arret)
{
printf("voulez-vous ajouter un enregistrement?? tapez 0 pour oui 1 pour non");
scanf ("%d",arret);
if (!arret)
{
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
while ((p!=NULL) && (!trouv))
{
if(!strcmp(tab,p->val.ville))
{
if (p->val.pos<99)
{
trouv=1;
p->val.pos++;
printf ("\n veuillez introduire la date svp: ");
scanf("%d", p->val.date[p->val.pos]);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",p->val.temp[p->val.pos]);
}
}
p=p->suiv;
};
if (!trouv) /********* si la ville n'existe pas ou il n'ya pas de la place pour l'inserer*******/
{
k=malloc(sizeof(bloc)); /*** on crée un nouveau bloc*****/
k->val.pos=0;
strcpy(k->val.ville,tab); /*** on copie la nouvelle ville dans le champs ville du bloc****/
queue->suiv=k; /*** on fait le chainage *****/
k->suiv=NULL;
queue=k;/** on modifie la queue ****/
printf ("\n veuillez introduire la date svp: ");
scanf("%d",p->val.date[0]);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",p->val.temp[0]);
}
}
};
/*************modifier la temperature d'une ville donnée à une date donnée**************/
arret=0;
while(!arret)
{
printf("voulez-vous modifier la temperature d'une ville?????(0 oui 1 non)");
scanf("%d",&arret);
if (!arret)
{
printf("introduisez le nom de la ville svp");
scanf("%s",tab);
printf ("\n veuillez introduire la date svp: ");
scanf("%d",&c);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&j);
p=tete;
trouv=0;
while ((p!=NULL)&&(!trouv))/****on cherche la ville et la date****/
{
if(strcmp(p->val.ville,tab)==0)
{
for (i=0;i<=p->val.pos;i++)
{
if(p->val.date[i]==c) /**** on compare les dates du blocs jusqu'à pos****/
{
p->val.temp[i]=j;/***** s'il ya egalité on ecrase l'ancienne temp****/
trouv=1; /*** la ville et la date que l'utilisateur a données existent***/
}
}
}
p=p->suiv;/*** on cherche dans les autres blocs si la ville occupe plusieurs plocs****/
}
if (!trouv)
printf("la ville ou la date que vous avez demandées n'existent pas dans le fichier");
}
}
}
et je l'ai rendu moins long
mais tjrs il y a le meme probleme
je ne sais pas pourquoi il n'ecrit pas dans le fichier
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct temp_ville
{
char ville [50];
int date [100];
int temp [100];
int pos ;/* la derniere position occupée*/
};
struct bloc
{
struct temp_ville val;
struct bloc *suiv;
};
typedef struct bloc bloc;
int main()
{
bloc *tete=NULL;
bloc *p=NULL ,*k=NULL;
bloc *t=NULL ,*h=NULL,*queue=NULL;
FILE *fichier;
char nomfichier[50];
char tab[50];
int i,j,a,c,arret=0,trouv=0,supprime=0,entree=0;
while(!arret)
{
arret=0;
p=malloc(sizeof(bloc));
p->val.pos=0;
if(p!=NULL)
{
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",p->val.ville);
printf ("\n veuillez introduire la date svp: (la date doit etre sous le format 12122010 par exemple)");
scanf("%d",p->val.date[0]);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",p->val.temp[0]);
if(tete==NULL)
{
tete=p;
p->suiv=NULL;
queue=tete;
}else
{
queue->suiv=p;
p->suiv=NULL;
queue=p;
}
printf("\n voulez-vous inserer une autre fois?(0 pour oui 1 pour non)");
scanf("%d",&arret);
if (!arret)
{
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
/*****vérifiant si la ville qu'il vient d'inserer existe déja dans l'un des blocs******/
while ((p!=NULL) && (!trouv))
{
if(strcmp(tab,p->val.ville)==0) /*****si elle existe****/
{
if (p->val.pos<99) /*****on vérifie s'il y a de la place pour l'inserer*****/
{
trouv=1; /*pour arreter la recherche*/
p->val.pos++;
printf ("\n veuillez introduire la date svp: ");
scanf("%d",p->val.date[p->val.pos]);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",p->val.temp[p->val.pos]);
}
}
/****dans le cas où il y a ++ blocs qui contiennent les enregisterement de la meme ville******/
p=p->suiv;
};
}
}
}/********si la ville n'a pas été inserée avant où dans le cas où tt les
blocs de cette ville étaient pleins,on reboucle et on crée un nouveau bloc
en faisant le chainage(au niveau de la queue)************/
/***************ecriture dans le fichier**************/
printf("entrer le nom du fichier svp : ");
scanf("%s",nomfichier);
fichier=fopen(nomfichier,"wb");
if (fichier!=NULL)
{
fprintf(fichier,"\n\t **** les temperatures des villes inserées *****");
p=tete;
while(p!=NULL)
{
fprintf(fichier,"\n________________________________________________________________");
fprintf(fichier,"\n| ville : | %s |",p->val.ville);
fprintf(fichier,"\n|__________|____________________________________________________|");
for(i=0;i<=p->val.pos;i++)
{ /*supposons qu'on a 12122010 ***/
c=(p->val.date[i]/1000000); /*on obtient le jour 12*/
a=(p->val.date[i]%1000000);
fprintf(fichier,"\n|date :| %d / ",c);/****|date :| 12/ *****/
c=(a/10000);
fprintf(fichier," %d / ",c); /***| date :|12/12/ **********/
c=(a/10000);
fprintf(fichier," %d / ",c); /*** |date :| 12/12/2010 |*******/
a=a%10000;
fprintf(fichier," %d | ",a);
fprintf(fichier,"temperature: | %d",p->val.temp[i]);
fprintf( fichier,"\n| ____________________________________________________________________|");
}
p=p->suiv;
};
}
fclose(fichier);
/**************supprission d'une ville*****************/
while(!supprime)
{
printf("voulez-vous supprimer tous les enregistrements d'une ville?(tapez 0 pour oui 1 pour non) ");
scanf("%d",&supprime);
if (supprime==0)
{
printf("donnez le nom de la ville a supprimer");
scanf("%s",tab);
p=tete;
while(p!=NULL)
{
if (strcmp(p->val.ville,tab)==0)
{
t=p->suiv;
free(p);
h->suiv=t;
}
h=p;
p=p->suiv;
}
}
};
/*********************ajouter un enregistrement***************/
arret=0;
while (!arret)
{
printf("voulez-vous ajouter un enregistrement?? tapez 0 pour oui 1 pour non");
scanf ("%d",arret);
if (!arret)
{
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
while ((p!=NULL) && (!trouv))
{
if(!strcmp(tab,p->val.ville))
{
if (p->val.pos<99)
{
trouv=1;
p->val.pos++;
printf ("\n veuillez introduire la date svp: ");
scanf("%d", p->val.date[p->val.pos]);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",p->val.temp[p->val.pos]);
}
}
p=p->suiv;
};
if (!trouv) /********* si la ville n'existe pas ou il n'ya pas de la place pour l'inserer*******/
{
k=malloc(sizeof(bloc)); /*** on crée un nouveau bloc*****/
k->val.pos=0;
strcpy(k->val.ville,tab); /*** on copie la nouvelle ville dans le champs ville du bloc****/
queue->suiv=k; /*** on fait le chainage *****/
k->suiv=NULL;
queue=k;/** on modifie la queue ****/
printf ("\n veuillez introduire la date svp: ");
scanf("%d",p->val.date[0]);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",p->val.temp[0]);
}
}
};
/*************modifier la temperature d'une ville donnée à une date donnée**************/
arret=0;
while(!arret)
{
printf("voulez-vous modifier la temperature d'une ville?????(0 oui 1 non)");
scanf("%d",&arret);
if (!arret)
{
printf("introduisez le nom de la ville svp");
scanf("%s",tab);
printf ("\n veuillez introduire la date svp: ");
scanf("%d",&c);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&j);
p=tete;
trouv=0;
while ((p!=NULL)&&(!trouv))/****on cherche la ville et la date****/
{
if(strcmp(p->val.ville,tab)==0)
{
for (i=0;i<=p->val.pos;i++)
{
if(p->val.date[i]==c) /**** on compare les dates du blocs jusqu'à pos****/
{
p->val.temp[i]=j;/***** s'il ya egalité on ecrase l'ancienne temp****/
trouv=1; /*** la ville et la date que l'utilisateur a données existent***/
}
}
}
p=p->suiv;/*** on cherche dans les autres blocs si la ville occupe plusieurs plocs****/
}
if (!trouv)
printf("la ville ou la date que vous avez demandées n'existent pas dans le fichier");
}
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 18/12/2010 à 15:38
Modifié par KX le 18/12/2010 à 15:38
Même problème à la compilation que celui que j'ai déjà relevé :
Utilise un compilateur pour trouver tes erreurs, tu ne peux pas juste faire copier-coller du code !
La confiance n'exclut pas le contrôle
Description Ligne error C2440: '=' : impossible de convertir de 'void *' en 'bloc *' 43 error C2440: '=' : impossible de convertir de 'void *' en 'bloc *' 179
Utilise un compilateur pour trouver tes erreurs, tu ne peux pas juste faire copier-coller du code !
La confiance n'exclut pas le contrôle
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 déc. 2010 à 15:37
18 déc. 2010 à 15:37
De plus il faut également considérer les warnings suivants :
Description Ligne warning C4101: 'ancienneville' : variable locale non référencée 37 warning C4101: 'b' : variable locale non référencée 39 warning C4101: 'max' : variable locale non référencée 39 warning C4101: 'min' : variable locale non référencée 39
breaveheart19_28
Messages postés
6
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
19 décembre 2010
18 déc. 2010 à 20:29
18 déc. 2010 à 20:29
j'ai utilisé le compilateur du code blocks et il m'affiche pas les erreurs que vous etes en train de mentionner
concernant les warnings
j'ai oublié de supprimer ces variables lorsque j'ai modifié le code source
j'ai pas fait du copier_coller la deuxieme fois
le probleme se pose lors de l'allocation dynamique
pas au niveau des instructions de control
concernant les warnings
j'ai oublié de supprimer ces variables lorsque j'ai modifié le code source
j'ai pas fait du copier_coller la deuxieme fois
le probleme se pose lors de l'allocation dynamique
pas au niveau des instructions de control
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 déc. 2010 à 20:37
18 déc. 2010 à 20:37
Même si Code::Blocks ne les détectes pas à la compilation, l'erreur reste valable !
Tu parles de problème à l'allocation dynamique, moi aussi :
Si ça c'est pas des instructions d'allocations mémoire, je ne sais pas ce que c'est !
Remarque : je ne prétends pas que ce soit ton seul problème...
Tu parles de problème à l'allocation dynamique, moi aussi :
error C2440: '=' ligne 43 p=malloc(sizeof(bloc)); error C2440: '=' ligne 179 k=malloc(sizeof(bloc));
Si ça c'est pas des instructions d'allocations mémoire, je ne sais pas ce que c'est !
Remarque : je ne prétends pas que ce soit ton seul problème...
breaveheart19_28
Messages postés
6
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
19 décembre 2010
19 déc. 2010 à 21:56
19 déc. 2010 à 21:56
le probleme etait au niveau des scanf j'ai oublié de mettre & c tt
voilà le programme il marche tres bien maintenant
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct temp_ville
{
char ville [50];
int date [2];
int temp [2];
int pos ;/* la derniere position occupée*/
};
struct bloc
{
struct temp_ville val;
struct bloc *suiv;
};
struct maillon
{
int num;
struct maillon *suivant ;
};
typedef struct bloc bloc;
typedef struct maillon maillon;
int main()
{
/******** le programme que j'ai ecrit et long car il y a bcp de vérifications qui se repetent*****/
/***il n'y a pas d'erreurs dans mon programme mais pour une raison ou une autre il n'ecrit pas dans le fichier*****/
bloc *tete=NULL;
bloc *p=NULL ,*k=NULL;
bloc *t=NULL ,*h=NULL,*queue=NULL;
FILE *fichier;
maillon *g=NULL,*tete2=NULL,*queue2=NULL,*l=NULL;
char nomfichier[50];
char tab[50];
char ancienneville[50];
int i,j,a,b,c,min,max,confirme=0,cpt=0,arret=0,trouv=0,supprime=0,moy=0,entree=0,repeter=0;
while(!arret)
{
arret=1;
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
instr:
p=malloc(sizeof(bloc));
p->val.pos=0;
strcpy(p->val.ville,tab);
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<=0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<=0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1900)||(c<=0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
p->val.date[0]=c;
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&p->val.temp[0]);
if(tete==NULL)
{
tete=p;
p->suiv=NULL;
queue=tete;
}
if (tete!=NULL)
{
queue->suiv=p;
p->suiv=NULL;
queue=p;
}
do
{
printf("\n voulez-vous inserer une autre fois?(0 pour oui 1 pour non)");
scanf("%d",&repeter);
if (!repeter)
{
do{
confirme=0;
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
printf("\n voulez-vous modifier le nom de la ville????? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
/*****vérifiant si la ville qu'il vient d'inserer existe déja dans l'un des blocs******/
p=tete;trouv=0;
while ((p!=NULL) && (!trouv))
{
if(strcmp(tab,p->val.ville)==0) /*****si elle existe****/
{
if (p->val.pos<1) /*****on vérifie s'il y a de la place pour l'inserer*****/
{
trouv=1; /*pour arreter la recherche*/
p->val.pos++;
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1500)||(c<0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
p->val.date[p->val.pos]=c;
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&p->val.temp[p->val.pos]);
}
/****dans le cas où il y a ++ blocs qui contiennent les enregisterement de la meme ville******/
}
p=p->suiv;
};
if (!trouv) goto instr;
}
}while(!repeter);
}/********si la ville n'a pas été inserée avant où dans le cas où tt les
blocs de cette ville été pleins,on reboucle et on crée un nouveau bloc
en faisant le chainage(au niveau de la queue)************/
/***************ecriture dans le fichier**************/
printf("entrer le nom du fichier svp : ");
scanf("%s",nomfichier);
fichier=fopen(nomfichier,"wb");
if (fichier!=NULL)
{
fprintf(fichier,"\n\t **** les temperatures des villes inserées *****");
p=tete;
while(p!=NULL)
{
fprintf(fichier,"\n________________________________________________________________");
fprintf(fichier,"\n| ville : | %s |",p->val.ville);
fprintf(fichier,"\n|__________|____________________________________________________|");
for(i=0;i<=p->val.pos;i++)
{ /*supposons qu'on a 12122010 ***/
c=(p->val.date[i]/1000000); /*on obtient le jour 12*/
a=(p->val.date[i]%1000000);
fprintf(fichier,"\n|date : | ");/****|date :| 12/ *****/
fprintf(fichier," %d / ",c); /***| date :|12/12/ **********/
c=(a/10000);
fprintf(fichier," %d / ",c); /*** |date :| 12/12/2010 |*******/
a=a%10000;
fprintf(fichier," %d | ",a);
fprintf(fichier,"temperature: | %d",p->val.temp[i]);
fprintf( fichier,"\n| ______________________________________________________________|");
}
p=p->suiv;
};
}
fclose(fichier);
/****************************supprission d'une ville*****************************************/
while(!supprime)
{
printf("voulez-vous supprimer tous les enregistrements d'une ville?(tapez 0 pour oui 1 pour non) ");
scanf("%d",&supprime);
if (supprime==0)
{
printf("donnez le nom de la ville a supprimer");
scanf("%s",tab);
p=tete;t=p;h=p;
while(p!=NULL)
{
if (strcmp(p->val.ville,tab)==0)
{
if(p==tete)
{
tete=p->suiv;
free(p);
}else
{
if (p==queue)
{
queue=h;
h->suiv=NULL;
free(p);
}else
{
h->suiv=p->suiv;
free(p);
}
}
}
h=p;
p=p->suiv;
}
}
};
printf("entrer le nom du fichier svp : ");
scanf("%s",nomfichier);
fichier=fopen(nomfichier,"wb");
if (fichier!=NULL)
{
fprintf(fichier,"\n\t **** les temperatures des villes inserées *****");
p=tete;
while(p!=NULL)
{
fprintf(fichier,"\n________________________________________________________________");
fprintf(fichier,"\n| ville : | %s |",p->val.ville);
fprintf(fichier,"\n|__________|____________________________________________________|");
for(i=0;i<=p->val.pos;i++)
{ /*supposons qu'on a 12122010 ***/
c=(p->val.date[i]/1000000); /*on obtient le jour 12*/
a=(p->val.date[i]%1000000);
fprintf(fichier,"\n|date : | ");/****|date :| 12/ *****/
fprintf(fichier," %d / ",c); /***| date :|12/12/ **********/
c=(a/10000);
fprintf(fichier," %d / ",c); /*** |date :| 12/12/2010 |*******/
a=a%10000;
fprintf(fichier," %d | ",a);
fprintf(fichier,"temperature: | %d",p->val.temp[i]);
fprintf( fichier,"\n| ______________________________________________________________|");
}
p=p->suiv;
};
}
fclose(fichier);
/*********************ajouter un enregistrement************/
printf("voulez-vous ajouter un enregistrement?? tapez 0 pour oui 1 pour non");
scanf ("%d",&arret);
while(!arret)
{
arret=1;
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
instr1:
p=malloc(sizeof(bloc));
p->val.pos=0;
strcpy(p->val.ville,tab);
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<=0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<=0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1900)||(c<=0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
p->val.date[0]=c;
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&p->val.temp[0]);
if(tete==NULL)
{
tete=p;
p->suiv=NULL;
queue=tete;
}
if (tete!=NULL)
{
queue->suiv=p;
p->suiv=NULL;
queue=p;
}
do
{
printf("\n voulez-vous inserer une autre fois?(0 pour oui 1 pour non)");
scanf("%d",&repeter);
if (!repeter)
{
do{
confirme=0;
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
printf("\n voulez-vous modifier le nom de la ville????? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
/*****vérifiant si la ville qu'il vient d'inserer existe déja dans l'un des blocs******/
p=tete;trouv=0;
while ((p!=NULL) && (!trouv))
{
if(strcmp(tab,p->val.ville)==0) /*****si elle existe****/
{
if (p->val.pos<1) /*****on vérifie s'il y a de la place pour l'inserer*****/
{
trouv=1; /*pour arreter la recherche*/
p->val.pos++;
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1500)||(c<0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
p->val.date[p->val.pos]=c;
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&p->val.temp[p->val.pos]);
}
/****dans le cas où il y a ++ blocs qui contiennent les enregisterement de la meme ville******/
}
p=p->suiv;
};
if (!trouv) goto instr1;
}
}while(!repeter);
}
printf("entrer le nom du fichier svp : ");
scanf("%s",nomfichier);
fichier=fopen(nomfichier,"wb");
if (fichier!=NULL)
{
fprintf(fichier,"\n\t **** les temperatures des villes inserées *****");
p=tete;
while(p!=NULL)
{
fprintf(fichier,"\n________________________________________________________________");
fprintf(fichier,"\n| ville : | %s |",p->val.ville);
fprintf(fichier,"\n|__________|____________________________________________________|");
for(i=0;i<=p->val.pos;i++)
{ /*supposons qu'on a 12122010 ***/
c=(p->val.date[i]/1000000); /*on obtient le jour 12*/
a=(p->val.date[i]%1000000);
fprintf(fichier,"\n|date : | ");/****|date :| 12/ *****/
fprintf(fichier," %d / ",c); /***| date :|12/12/ **********/
c=(a/10000);
fprintf(fichier," %d / ",c); /*** |date :| 12/12/2010 |*******/
a=a%10000;
fprintf(fichier," %d | ",a);
fprintf(fichier,"temperature: | %d",p->val.temp[i]);
fprintf( fichier,"\n| ______________________________________________________________|");
}
p=p->suiv;
};
}
fclose(fichier);
/*************modifier la temperature d'une ville donnée à une date donnée**************/
arret=0;
while(!arret)
{
printf("voulez-vous modifier la temperature d'une ville?????(0 oui 1 non)");
scanf("%d",&arret);
if (!arret)
{
printf("introduisez le nom de la ville svp");
scanf("%s",tab);
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1500)||(c<0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&j);
p=tete;
trouv=0;
while ((p!=NULL)&&(!trouv))/****on cherche la ville et la date****/
{
if(strcmp(p->val.ville,tab)==0)
{
for (i=0;i<=p->val.pos;i++)
{
if(p->val.date[i]==c) /**** on compare les dates du blocs jusqu'à pos****/
{
p->val.temp[i]=j;/***** s'il ya egalité on ecrase l'ancienne temp****/
trouv=1; /*** la ville et la date que l'utilisateur a données existent***/
}
}
}
p=p->suiv;/*** on cherche dans les autres blocs si la ville occupe plusieurs plocs****/
}
if (!trouv)
printf("la ville ou la date que vous avez demandées n'existent pas dans le fichier");
}
}
/*************affichage de la valeur min et max et la moyenne des temperatures d'une ville *****************/
arret=0;
while(!arret)
{
printf("inserez le nom de la ville que vous voulez afficher sa temp min et max et sa temperature moyenne");
scanf("%s",tab);
p=tete;
trouv=0;
while (p!=NULL)
{
if(strcmp(p->val.ville,tab)==0)
{
trouv=1;
entree=1;
min=p->val.temp[0];
max=p->val.temp[0];
for (i=0;i<= p->val.pos;i++)
{
if(min > p->val.temp[i])
min=p->val.temp[i];
if (max< p->val.temp[i])
max=p->val.temp[i];
moy=moy+p->val.temp[i];
cpt++;
}
p=p->suiv;
/**dans le cas où il y a ++ blocs qui concernent la meme ville
on a besoin de sauvegarder le min et le max de chaque bloc de cette ville
pour faire ce la on sauvegarde chaque fois le min et le max du bloc courant dans 2 maillons
on garde le chainage aprés on compare toutes les valeurs de cette liste et on trouv le mmin et le max****/
if (entree) /**si on s'est rentré dans la boucle pour =>on a besoin de sauvegarder les nouvelles valeurs qu'on a trouvé****/
{
entree=0;/***pour eviter de sauvegarder apres chaque execution de la boucle tq****/
l=malloc(sizeof(maillon));
l->num=min;
g=malloc(sizeof(maillon));
g->num=max;
if(tete2==NULL)
{tete2=l;
l->suivant=g;
queue2=g;
g->suivant=NULL;
}
else
{
queue2->suivant=l;
l->suivant=g;
queue2=g;
g->suivant=NULL;
}
}
}
};
if (trouv)
{
moy=moy/cpt;
l=tete2;
min=l->num;
max=l->suivant->num;
while (l!=NULL) /*** on cherche dans la list les valeurs min et max ****/
{
if (min>l->num)
min=l->num;
if(max<l->num)
max=l->num;
l=l->suivant;
}
printf("\n la temperature min est : %d",min);
printf("\n la temperature max est : %d",max);
printf("\n la temperature moyenne est : %d",moy);
}
else
printf("\nla ville que vous-avez demandé n'existe pas");
printf("\nvoulez-vous afficher les temp min max et moy d'une autre ville????(0 oui 1 non)");
scanf("%d",&arret);
}
}
voilà le programme il marche tres bien maintenant
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct temp_ville
{
char ville [50];
int date [2];
int temp [2];
int pos ;/* la derniere position occupée*/
};
struct bloc
{
struct temp_ville val;
struct bloc *suiv;
};
struct maillon
{
int num;
struct maillon *suivant ;
};
typedef struct bloc bloc;
typedef struct maillon maillon;
int main()
{
/******** le programme que j'ai ecrit et long car il y a bcp de vérifications qui se repetent*****/
/***il n'y a pas d'erreurs dans mon programme mais pour une raison ou une autre il n'ecrit pas dans le fichier*****/
bloc *tete=NULL;
bloc *p=NULL ,*k=NULL;
bloc *t=NULL ,*h=NULL,*queue=NULL;
FILE *fichier;
maillon *g=NULL,*tete2=NULL,*queue2=NULL,*l=NULL;
char nomfichier[50];
char tab[50];
char ancienneville[50];
int i,j,a,b,c,min,max,confirme=0,cpt=0,arret=0,trouv=0,supprime=0,moy=0,entree=0,repeter=0;
while(!arret)
{
arret=1;
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
instr:
p=malloc(sizeof(bloc));
p->val.pos=0;
strcpy(p->val.ville,tab);
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<=0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<=0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1900)||(c<=0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
p->val.date[0]=c;
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&p->val.temp[0]);
if(tete==NULL)
{
tete=p;
p->suiv=NULL;
queue=tete;
}
if (tete!=NULL)
{
queue->suiv=p;
p->suiv=NULL;
queue=p;
}
do
{
printf("\n voulez-vous inserer une autre fois?(0 pour oui 1 pour non)");
scanf("%d",&repeter);
if (!repeter)
{
do{
confirme=0;
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
printf("\n voulez-vous modifier le nom de la ville????? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
/*****vérifiant si la ville qu'il vient d'inserer existe déja dans l'un des blocs******/
p=tete;trouv=0;
while ((p!=NULL) && (!trouv))
{
if(strcmp(tab,p->val.ville)==0) /*****si elle existe****/
{
if (p->val.pos<1) /*****on vérifie s'il y a de la place pour l'inserer*****/
{
trouv=1; /*pour arreter la recherche*/
p->val.pos++;
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1500)||(c<0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
p->val.date[p->val.pos]=c;
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&p->val.temp[p->val.pos]);
}
/****dans le cas où il y a ++ blocs qui contiennent les enregisterement de la meme ville******/
}
p=p->suiv;
};
if (!trouv) goto instr;
}
}while(!repeter);
}/********si la ville n'a pas été inserée avant où dans le cas où tt les
blocs de cette ville été pleins,on reboucle et on crée un nouveau bloc
en faisant le chainage(au niveau de la queue)************/
/***************ecriture dans le fichier**************/
printf("entrer le nom du fichier svp : ");
scanf("%s",nomfichier);
fichier=fopen(nomfichier,"wb");
if (fichier!=NULL)
{
fprintf(fichier,"\n\t **** les temperatures des villes inserées *****");
p=tete;
while(p!=NULL)
{
fprintf(fichier,"\n________________________________________________________________");
fprintf(fichier,"\n| ville : | %s |",p->val.ville);
fprintf(fichier,"\n|__________|____________________________________________________|");
for(i=0;i<=p->val.pos;i++)
{ /*supposons qu'on a 12122010 ***/
c=(p->val.date[i]/1000000); /*on obtient le jour 12*/
a=(p->val.date[i]%1000000);
fprintf(fichier,"\n|date : | ");/****|date :| 12/ *****/
fprintf(fichier," %d / ",c); /***| date :|12/12/ **********/
c=(a/10000);
fprintf(fichier," %d / ",c); /*** |date :| 12/12/2010 |*******/
a=a%10000;
fprintf(fichier," %d | ",a);
fprintf(fichier,"temperature: | %d",p->val.temp[i]);
fprintf( fichier,"\n| ______________________________________________________________|");
}
p=p->suiv;
};
}
fclose(fichier);
/****************************supprission d'une ville*****************************************/
while(!supprime)
{
printf("voulez-vous supprimer tous les enregistrements d'une ville?(tapez 0 pour oui 1 pour non) ");
scanf("%d",&supprime);
if (supprime==0)
{
printf("donnez le nom de la ville a supprimer");
scanf("%s",tab);
p=tete;t=p;h=p;
while(p!=NULL)
{
if (strcmp(p->val.ville,tab)==0)
{
if(p==tete)
{
tete=p->suiv;
free(p);
}else
{
if (p==queue)
{
queue=h;
h->suiv=NULL;
free(p);
}else
{
h->suiv=p->suiv;
free(p);
}
}
}
h=p;
p=p->suiv;
}
}
};
printf("entrer le nom du fichier svp : ");
scanf("%s",nomfichier);
fichier=fopen(nomfichier,"wb");
if (fichier!=NULL)
{
fprintf(fichier,"\n\t **** les temperatures des villes inserées *****");
p=tete;
while(p!=NULL)
{
fprintf(fichier,"\n________________________________________________________________");
fprintf(fichier,"\n| ville : | %s |",p->val.ville);
fprintf(fichier,"\n|__________|____________________________________________________|");
for(i=0;i<=p->val.pos;i++)
{ /*supposons qu'on a 12122010 ***/
c=(p->val.date[i]/1000000); /*on obtient le jour 12*/
a=(p->val.date[i]%1000000);
fprintf(fichier,"\n|date : | ");/****|date :| 12/ *****/
fprintf(fichier," %d / ",c); /***| date :|12/12/ **********/
c=(a/10000);
fprintf(fichier," %d / ",c); /*** |date :| 12/12/2010 |*******/
a=a%10000;
fprintf(fichier," %d | ",a);
fprintf(fichier,"temperature: | %d",p->val.temp[i]);
fprintf( fichier,"\n| ______________________________________________________________|");
}
p=p->suiv;
};
}
fclose(fichier);
/*********************ajouter un enregistrement************/
printf("voulez-vous ajouter un enregistrement?? tapez 0 pour oui 1 pour non");
scanf ("%d",&arret);
while(!arret)
{
arret=1;
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
instr1:
p=malloc(sizeof(bloc));
p->val.pos=0;
strcpy(p->val.ville,tab);
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<=0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<=0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1900)||(c<=0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
p->val.date[0]=c;
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&p->val.temp[0]);
if(tete==NULL)
{
tete=p;
p->suiv=NULL;
queue=tete;
}
if (tete!=NULL)
{
queue->suiv=p;
p->suiv=NULL;
queue=p;
}
do
{
printf("\n voulez-vous inserer une autre fois?(0 pour oui 1 pour non)");
scanf("%d",&repeter);
if (!repeter)
{
do{
confirme=0;
printf("\n veuillez introduire le nom de la ville svp :") ;
scanf("%s",tab);
printf("\n voulez-vous modifier le nom de la ville????? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
/*****vérifiant si la ville qu'il vient d'inserer existe déja dans l'un des blocs******/
p=tete;trouv=0;
while ((p!=NULL) && (!trouv))
{
if(strcmp(tab,p->val.ville)==0) /*****si elle existe****/
{
if (p->val.pos<1) /*****on vérifie s'il y a de la place pour l'inserer*****/
{
trouv=1; /*pour arreter la recherche*/
p->val.pos++;
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1500)||(c<0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
p->val.date[p->val.pos]=c;
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&p->val.temp[p->val.pos]);
}
/****dans le cas où il y a ++ blocs qui contiennent les enregisterement de la meme ville******/
}
p=p->suiv;
};
if (!trouv) goto instr1;
}
}while(!repeter);
}
printf("entrer le nom du fichier svp : ");
scanf("%s",nomfichier);
fichier=fopen(nomfichier,"wb");
if (fichier!=NULL)
{
fprintf(fichier,"\n\t **** les temperatures des villes inserées *****");
p=tete;
while(p!=NULL)
{
fprintf(fichier,"\n________________________________________________________________");
fprintf(fichier,"\n| ville : | %s |",p->val.ville);
fprintf(fichier,"\n|__________|____________________________________________________|");
for(i=0;i<=p->val.pos;i++)
{ /*supposons qu'on a 12122010 ***/
c=(p->val.date[i]/1000000); /*on obtient le jour 12*/
a=(p->val.date[i]%1000000);
fprintf(fichier,"\n|date : | ");/****|date :| 12/ *****/
fprintf(fichier," %d / ",c); /***| date :|12/12/ **********/
c=(a/10000);
fprintf(fichier," %d / ",c); /*** |date :| 12/12/2010 |*******/
a=a%10000;
fprintf(fichier," %d | ",a);
fprintf(fichier,"temperature: | %d",p->val.temp[i]);
fprintf( fichier,"\n| ______________________________________________________________|");
}
p=p->suiv;
};
}
fclose(fichier);
/*************modifier la temperature d'une ville donnée à une date donnée**************/
arret=0;
while(!arret)
{
printf("voulez-vous modifier la temperature d'une ville?????(0 oui 1 non)");
scanf("%d",&arret);
if (!arret)
{
printf("introduisez le nom de la ville svp");
scanf("%s",tab);
printf ("\n veuillez introduire la date svp: ");
do{
confirme=0;
printf("\n \t le jour :") ;
scanf("%d",&a);
while((a>31) ||(a<0))
{
printf("\n il y a une erreur \n veuillez introduire le jour une autre fois svp:");
printf("\n le jour : ");
scanf("%d",&a);
};
printf("\n voulez-vous modifier le jour ?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t le mois :") ;
scanf("%d",&b);
while((b>12)||(b<0))
{
printf("\n il y a une erreur \n veuillez introduire le mois une autre fois svp:");
printf("\n le mois : ");
scanf("%d",&b);
};
printf("\n voulez-vous modifier le mois?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
do{
confirme=0;
printf("\n \t l'annee :") ;
scanf("%d",&c);
while((c<1500)||(c<0))
{
printf("il y a une erreur \n veuillez introduire l'annee une autre fois svp:");
printf("\n l'annee : ");
scanf("%d",&c);
};
printf("\n voulez-vous modifier l'annee?? (tapez 0 pour oui 1 pour non): ");
scanf("%d",&confirme);
}while(!confirme);
c=c+(b*10000)+(a*1000000);
printf ("\n veuillez introduire la temperature svp: ");
scanf ("%d",&j);
p=tete;
trouv=0;
while ((p!=NULL)&&(!trouv))/****on cherche la ville et la date****/
{
if(strcmp(p->val.ville,tab)==0)
{
for (i=0;i<=p->val.pos;i++)
{
if(p->val.date[i]==c) /**** on compare les dates du blocs jusqu'à pos****/
{
p->val.temp[i]=j;/***** s'il ya egalité on ecrase l'ancienne temp****/
trouv=1; /*** la ville et la date que l'utilisateur a données existent***/
}
}
}
p=p->suiv;/*** on cherche dans les autres blocs si la ville occupe plusieurs plocs****/
}
if (!trouv)
printf("la ville ou la date que vous avez demandées n'existent pas dans le fichier");
}
}
/*************affichage de la valeur min et max et la moyenne des temperatures d'une ville *****************/
arret=0;
while(!arret)
{
printf("inserez le nom de la ville que vous voulez afficher sa temp min et max et sa temperature moyenne");
scanf("%s",tab);
p=tete;
trouv=0;
while (p!=NULL)
{
if(strcmp(p->val.ville,tab)==0)
{
trouv=1;
entree=1;
min=p->val.temp[0];
max=p->val.temp[0];
for (i=0;i<= p->val.pos;i++)
{
if(min > p->val.temp[i])
min=p->val.temp[i];
if (max< p->val.temp[i])
max=p->val.temp[i];
moy=moy+p->val.temp[i];
cpt++;
}
p=p->suiv;
/**dans le cas où il y a ++ blocs qui concernent la meme ville
on a besoin de sauvegarder le min et le max de chaque bloc de cette ville
pour faire ce la on sauvegarde chaque fois le min et le max du bloc courant dans 2 maillons
on garde le chainage aprés on compare toutes les valeurs de cette liste et on trouv le mmin et le max****/
if (entree) /**si on s'est rentré dans la boucle pour =>on a besoin de sauvegarder les nouvelles valeurs qu'on a trouvé****/
{
entree=0;/***pour eviter de sauvegarder apres chaque execution de la boucle tq****/
l=malloc(sizeof(maillon));
l->num=min;
g=malloc(sizeof(maillon));
g->num=max;
if(tete2==NULL)
{tete2=l;
l->suivant=g;
queue2=g;
g->suivant=NULL;
}
else
{
queue2->suivant=l;
l->suivant=g;
queue2=g;
g->suivant=NULL;
}
}
}
};
if (trouv)
{
moy=moy/cpt;
l=tete2;
min=l->num;
max=l->suivant->num;
while (l!=NULL) /*** on cherche dans la list les valeurs min et max ****/
{
if (min>l->num)
min=l->num;
if(max<l->num)
max=l->num;
l=l->suivant;
}
printf("\n la temperature min est : %d",min);
printf("\n la temperature max est : %d",max);
printf("\n la temperature moyenne est : %d",moy);
}
else
printf("\nla ville que vous-avez demandé n'existe pas");
printf("\nvoulez-vous afficher les temp min max et moy d'une autre ville????(0 oui 1 non)");
scanf("%d",&arret);
}
}