Code:
/* Ce programme saisi des données sur des animaux etudiés par une biologiste:
- 1ere ligne, leur nombre, pour créer les tableaux qui contiendront
les infos
- 2eme ligne et + (jusqu'au nombre saisi à la première ligne), leur sexe
(M ou F, char), leur age (en jours, int), leur poids (en kg, réel)
et leur taille (en cm, réel)
et affiche des résultats selon ces critères:
- les coordonnées des males de plus de 30cm
- le nombre de femelles qui pèsent moins de 1.0 kg
- l'age moyen des femelles et celui des males
- la longueur minimale et maximale des animaux */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define HAUTEUR 30.0
#define POIDS 1.0
int main()
{
// initialisation des variables
int nbrAnimaux=0; // Valeur que specifie l'usager pour creer les tableaux
int nbrMale=0; // compteur animaux males
int nbrFemelle=0; // compteur des femelles
//int coordMG=0; // compteur des animaux > 30cm de longueur
int nbrFemelleL=0; // compteur des femelles < 1kg
int i, j; // compteur boucle
int ageTotalM=0; // age total et moyen des males
int ageTotalF=0; // age total et moyen des femelles
float taillePlusCourte=5000;
float taillePlusGrande=0;
char condition; // Oui ou Non
float taille[nbrAnimaux], poids[nbrAnimaux];
int age[nbrAnimaux];
char sexe[nbrAnimaux];
// Boucle do ... while, pour ne pas devoir repartir le programme pour chaque calcul
do
{
// Saisi et lecture des donnees
printf("SVP entrez le nombre d'animaux pour vos calculs:\n");
scanf("%d", &nbrAnimaux);
// printf("Maintenant, SVP entrez les details comme ceci, \nSexe (M/F), Age, Poids et Longueur\n");
for (i=0; i < nbrAnimaux; i++)
{
age[i] == 0;
}
for (i = 1; i <= nbrAnimaux; i++)
{
printf("Animal %d\n", i);
printf("entrez sexe (M/F)\n");
fflush(stdin);
scanf("%c", &sexe[i]);
printf("entrez l age en jours\n");
fflush(stdin);
scanf("%d", &age[i]);
printf("entrez le poids en kg\n");
fflush(stdin);
scanf("%f", &poids[i]);
printf("entrez la longueur en cm\n");
fflush(stdin);
scanf("%f", &taille[i]);
}
// debug
for (i = 1; i <=nbrAnimaux; i++)
{
printf("sexe: %c ", sexe[i]);
printf("age: %d", age[i]);
printf("poids: %f", poids[i]);
printf("taille: %f\n", taille[i]);
}
// end debug
for (j = 1; j <= nbrAnimaux; j++)
{
if (toupper(sexe[j]) == 'M') // Compter les males et femelles
{
nbrMale++;
ageTotalM += age[j];
}
else
{
nbrFemelle++;
ageTotalF += age[j];
}
if (toupper(sexe[j]) == 'F' && poids[j] < POIDS)
nbrFemelleL++;
if (toupper(sexe[j]) == 'M' && taille[j] > HAUTEUR)
printf ("Coordonnes du repere Male > 30cm: %d\n", j);
if (taille[j] < taillePlusCourte)
taillePlusCourte = taille[j];
if (taille [j] > taillePlusGrande)
taillePlusGrande = taille[j];
}
printf("Nombre de males: %d\n", nbrMale);
printf("Nombre de femelles: %d\n", nbrFemelle);
printf("Nombre de femelles pesant moins de 1kg: %d\n", nbrFemelleL);
// printf("Age moyen des mal%& %d% et l\'age moyen des femelles: %d\n", ageTotalM/nbrMale, ageTotalF/nbrFemelle);
printf("Taille plus grande: %6.2f et taille plus courte: %6.2f\n", taillePlusGrande, taillePlusCourte);
// debug
// for (i = 0; 1<nbrAnimaux; i++)
// printf ("a la case %d, le sexe est %c, l'age est %d, le poids est %f et la longueur est %f", i, sexe[i], age[i], poids[i], taille[i]);
// end debug
// Condition requise pour repartir du début
printf ("\nVoulez vous faire un autre calcul, (o/n)?");
fflush (stdin); // Fonction pour vider stdin
condition = toupper(getchar()); // Capitaliser la letter et soumettre à condition
} while ( condition == 'O'); // Repartir du début si O
// fin du do while restart
}