progPrincipal.cpp
meteo.h
meteo.cpp
Makefile
Enjoy!
- Code:
#include <bcio.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include "meteo.h"
//Constantes
#define KMAXL 100
int main(void)
{
TRelever tabRelever[KMAXL];
int nbListe = -1;
int i, nbRelev;
char chDept[KCMAX];
float moyenne;
//SAISIE DU LISTING ---------------->
while(nbListe<0)
{
printf("Saisir le nombre de liste a traiter (<0): ");
scanf("%d",&nbListe);
}
for(i=0;i<=nbListe-1;i++)
{
printf("\nSaisir le departement (Ex:31): ");
bcget(tabRelever[i].code.dept);
printf("\nSaisir le numero de Zone (2 chiffres): ");
scanf("%d",&tabRelever[i].code.zone);
printf("\nSaisir la temperature: ");
scanf("%f",&tabRelever[i].temp);
printf("\nSaisir le sens du vent {S,O,E,N}: ");
tabRelever[i].vent=getche();
while((tabRelever[i].vent!='S')&&(tabRelever[i].vent!='N')&&(tabRelever[i].vent!='O')&&(tabRelever[i].vent!='E'))
{
printf("\nSaisir le sens du vent {S,O,E,N}: ");
tabRelever[i].vent=getche();
}
}
//Partie 4 Traitement Saisie
printf("\nSaisir le departement pour la moyenne a afficher (Ex:31): ");
bcget(chDept);
moyenne = moyTempDept(tabRelever,nbListe,chDept);
//AFFICHAGE LISTING
for(i=0;i<=nbListe-1;i++)
{
printf("\n%d. departement: %s, zone: %d, Temperature: %f, Vent: %c\n",i+1,tabRelever[i].code.dept,tabRelever[i].code.zone,tabRelever[i].temp,tabRelever[i].vent);
}
//Partie 3
nbRelev=nbRelOrientation(tabRelever,nbListe,'S');
printf("Nombre de releves ayant une Orientation Sud: %d\n",nbRelev);
nbRelev=nbRelOrientation(tabRelever,nbListe,'N');
printf("Nombre de releves ayant une Orientation Nord: %d\n",nbRelev);
nbRelev=nbRelOrientation(tabRelever,nbListe,'E');
printf("Nombre de releves ayant une Orientation Est: %d\n",nbRelev);
nbRelev=nbRelOrientation(tabRelever,nbListe,'O');
printf("Nombre de releves ayant une Orientation Ouest: %d\n",nbRelev);
//Partie 4
printf("La moyenne du departement %s est de : %f degrés\n",chDept,moyenne);
system("PAUSE");
return 0;
}
meteo.h
- Code:
#ifndef _METEO_h
#define _meteo_h
#include <string.h>
//CONSTANTES -------------------->
#define KCMAX 3
//STRUCTURES -------------------->
typedef
struct
{
char dept[KCMAX];
int zone;
}
TCodeCapt;
typedef
struct
{
TCodeCapt code;
float temp;
char vent;
}
TRelever;
//FONCTIONS -------------------->
/************************************
*N:nbRelOrientation
*D:retourne le nombre d'élément ayant la même orientation
*E:pTab,pElement,pVent
*S:-
*R: retourne le nombre d'élément ayant la même orientation de la liste pTab
*Prec:-
************************************/
int nbRelOrientation(TRelever pTab[],int pElement,char pVent);
/************************************
*N:existeDept
*D:retourne Vrai si le département entrer existe dans la liste pTab[]
*E:pTab,pElement,pDept
*S:-
*R: retourne Vrai si le département entrer existe dans la liste pTab[]
*Prec:-
************************************/
bool existeDept(TRelever pTab[],int pElement,char pDept[]);
/************************************
*N:moyTempDept
*D:retourne la moyenne des températures d'un département
*S:-
*R: retourne la moyenne des températures d'un département dans la liste pTab[]
*Prec:le departement existe
************************************/
float moyTempDept(TRelever pTab[],int pElement,char pDept[]);
#endif
meteo.cpp
- Code:
#include "meteo.h"
/*****************
*N:nbRelOrientation
*D:retourne le nombre d'élément ayant la même orientation
*E:pTab,pElement,pVent
*S:-
*R: retourne le nombre d'élément ayant la même orientation de la liste pTab
*Prec:-
******************/
int nbRelOrientation(TRelever pTab[],int pElement,char pVent)
{
int result,i;
result=0;
for(i=0;i<=pElement-1;i++)
{
if(pTab[i].vent==pVent)
{
result++;
}
}
return result;
}
/************************************
*N:existeDept
*D:retourne Vrai si le département entrer existe dans la liste pTab[]
*E:pTab,pElement,pDept
*S:-
*R: retourne Vrai si le département entrer existe dans la liste pTab[]
*Prec:-
************************************/
bool existeDept(TRelever pTab[],int pElement,char pDept[])
{
bool result = false;
int i=0;
while((i<=pElement-1) && (result==false))
{
if(strcmp(pTab[i].code.dept,pDept)==0)
{
result=true;
}
i++;
}
return result;
}
/************************************
*N:moyTempDept
*D:retourne la moyenne des températures d'un département
*S:-
*R: retourne la moyenne des températures d'un département dans la liste pTab[]
*Prec:le departement existe sinon moyenne = 0;
************************************/
float moyTempDept(TRelever pTab[],int pElement,char pDept[])
{
float result=0;
float somme;
int i,nbval=0;
somme=0;
if(existeDept(pTab,pElement,pDept)==true)
{
for(i=0;i<=pElement;i++)
{
if(strcmp(pTab[i].code.dept,pDept)==0)
{
nbval++;
somme=somme+pTab[i].temp;
}
}
result=somme/nbval;
}
return result;
}
Makefile
- Code:
#------------------------------------
#PARTIE A MODIFIER POUR CHAQUE PROJET
#Nom du programme principal exécutable généré
MAIN=progPrincipal.exe
#Noms de tous les fichiers sources du projet (.c ou .cpp)
#Séparés par des espaces
SRCS=progPrincipal.cpp meteo.cpp
#Noms de tous les fichiers objets du projet (.o)
# qui doivent être générés par compilation
# Normalement : la même liste que SRCS, extensions avec .o
#Séparés par des espaces
OBJS=progPrincipal.o meteo.o
#-----------------------------
#PARTIE COMMUNE DE PARAMETRAGE
#Flags de compilation
OPTIONSCC=-Wall
#----------------------------------------
#PARTIE COMMUNE DES ORDRES DE COMPILATION
all: $(MAIN)
.c.o:
C:\mSciTE\MinGW\bin\gcc $(OPTIONSCC) -c $<
.cpp.o:
C:\mSciTE\MinGW\bin\gcc -IC:\mSciTE\MinGW\iut\include $(OPTIONSCC) -c $<
$(MAIN): $(OBJS)
C:\mSciTE\MinGW\bin\gcc -o $(MAIN) $(OBJS) C:\mSciTE\MinGW\iut\lib\libbc.a
clean:
C:\mSciTE\MinGW\iut\utils\nettoy.bat $(OBJS) $(MAIN)
execute:
$(MAIN)
echo --- FIN ---
pause
Enjoy!