[LANGAGE C] GrpB - Marées
Forum UVSQ :: DUT :: Informatique :: Programmation :: Programmes
Page 1 sur 1
[LANGAGE C] GrpB - Marées
TP2 du Groupe B:
"Un promeneur se balade près la mer, le 22 septembre à Brest, en regardant vers l'étendue bleutée, il se demande si la mer est en train de remonter ou en train de descendre."
Vous devez écrire un programme en langage C permettant de savoir en fonction de l'heure de la journée (entrée par l'utilisateur) si la mer est en train de monter ou de descendre (ou si elle est déjà haute ou déjà basse) et combien de temps il reste avant que l'on ne soit en pleine mer (marée haute) ou en basse mer (marée basse).
Correction:
Il ne s'agit pas de la correction "officielle" proposée par le prof mais un programme codé par moi même, jusqu'à preuve du contraire, il fonctionne ^^
De plus j'ai ajouté une série de commentaires permettant une meilleure compréhension et de le rendre plus clair.
Si vous avez une question ou un problème, n'hésitez pas !
"Un promeneur se balade près la mer, le 22 septembre à Brest, en regardant vers l'étendue bleutée, il se demande si la mer est en train de remonter ou en train de descendre."
Vous devez écrire un programme en langage C permettant de savoir en fonction de l'heure de la journée (entrée par l'utilisateur) si la mer est en train de monter ou de descendre (ou si elle est déjà haute ou déjà basse) et combien de temps il reste avant que l'on ne soit en pleine mer (marée haute) ou en basse mer (marée basse).
Correction:
Il ne s'agit pas de la correction "officielle" proposée par le prof mais un programme codé par moi même, jusqu'à preuve du contraire, il fonctionne ^^
De plus j'ai ajouté une série de commentaires permettant une meilleure compréhension et de le rendre plus clair.
Si vous avez une question ou un problème, n'hésitez pas !
- Spoiler:
- Code:
#include <stdio.h>
#include <stdlib.h>
//on définit les intervalles de validité des horaires
#define HEURE_MIN 00
#define HEURE_MAX 23
#define MINUTE_MIN 00
#define MINUTE_MAX 59
//la première marée est haute a 00h16, on converti en minutes en partant de minuit
#define MAREE_HAUTE1 16
//la première marée est basse a 06h33, même opération que précédemment
#define MAREE_BASSE1 393
//la seconde marée est haute a 12h55
#define MAREE_HAUTE2 775
//la seconde marée est basse a 19h27
#define MAREE_BASSE2 1167
//on définit la date du jour
#define JOUR "22 Septembre 2011"
int main()
{
//on initialise les variables dont on aura besoin
int ResScanf;
int heures, minutes, total;
int temps_restant, heures_restantes, minutes_restantes;
//on demande a l'utilisateur de rentrer l'heure du jour
printf("Bonjour, nous sommes le %s\n", JOUR);
printf("Veuillez indiquer l'heure qu'il est [HH:MM]: \n");
ResScanf = scanf("%2d:%2d", &heures, &minutes);
// printf("Le scanf a retourne %d valeurs.\n", ResScanf);
/*On teste pour etre sur que le scanf retourne bien 2 valeurs et que nous sommes bien dans les plages de validité: de 00h00 a 23h59
Si c'est le cas, on sort de la boucle, si le format est incorrect, on redemande a l'utilisateur de rentrer une heure valide */
while(((ResScanf != 2) || (((heures < HEURE_MIN) || (heures > HEURE_MAX)) || (minutes < MINUTE_MIN)) || (minutes > MINUTE_MAX)))
{
printf("Vous n'avez pas entre une heure valide.\n");
printf("Veuillez recommencer [HH:MM]: ");
ResScanf = scanf("%2d:%2d", &heures, &minutes);
}
printf("Vous avez indique qu'il etait: %d:%d\n", heures, minutes);
total = ((heures * 60) + minutes);
if((total == MAREE_HAUTE1) || (total == MAREE_HAUTE2)) //Cas ou la marée est déjà haute
{
printf("La maree est haute\n\n");
}
else if((total == MAREE_BASSE1) || (total == MAREE_BASSE2)) //Cas ou la marée est déjà basse
{
printf("La maree est basse\n\n");
}
else if((total > MAREE_HAUTE1) && (total < MAREE_BASSE1)) //Cas ou la marée est en train de redescendre en l'horaire 1 et l'horaire 2
{
temps_restant = MAREE_BASSE1 - total;
heures_restantes = temps_restant / 60;
minutes_restantes = temps_restant % 60;
printf("La maree descend.\n");
printf("Il reste %d heure(s) et %d minute(s) avant que l'on soit en basse mer\n\n", heures_restantes, minutes_restantes);
}
else if((total > MAREE_BASSE1) && (total < MAREE_HAUTE2)) //Cas ou la marée est en train de remonter entre l'horaire 2 et l'horaire 3
{
temps_restant = MAREE_HAUTE2 - total;
heures_restantes = temps_restant / 60;
minutes_restantes = temps_restant % 60;
printf("La maree monte.\n");
printf("Il reste %d heure(s) et %d minute(s) avant que l'on soit en pleine mer\n\n", heures_restantes, minutes_restantes);
}
else if((total > MAREE_HAUTE2) && (total < MAREE_BASSE2)) //Cas ou la marée est en train de redescendre en l'horaire 3 et l'horaire 4
{
temps_restant = MAREE_BASSE2 - total;
heures_restantes = temps_restant / 60;
minutes_restantes = temps_restant % 60;
printf("La maree descend.\n");
printf("Il reste %d heure(s) et %d minute(s) avant que l'on soit en basse mer\n\n", heures_restantes, minutes_restantes);
}
else //Cas ou l'utilisateur rentre un horaire hors des plages de
{
printf("Aucune(s) donnee(s) pour cet horaire...\n\n");
}
return 0;
}
Sujets similaires
» [LANGAGE C] GrpB - Exercice 4 Td2
» [LANGAGE C] La Calculatrice basique
» [LANGAGE C]Salaire Net[V1.1]
» [LANGAGE C] Le GPS du champ !
» [LANGAGE C] Morpion
» [LANGAGE C] La Calculatrice basique
» [LANGAGE C]Salaire Net[V1.1]
» [LANGAGE C] Le GPS du champ !
» [LANGAGE C] Morpion
Forum UVSQ :: DUT :: Informatique :: Programmation :: Programmes
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|