Ajout des TP
This commit is contained in:
49
BUT1/DEV1.1/CM2_2/EntrainementDS2/SUJET3/EXO MKTIME/mktime.c
Normal file
49
BUT1/DEV1.1/CM2_2/EntrainementDS2/SUJET3/EXO MKTIME/mktime.c
Normal file
@@ -0,0 +1,49 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "Usage: %s <date au format dd/mm/aa>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
struct tm date;
|
||||
time_t timestamp;
|
||||
|
||||
/* Analyse de la date fournie en argument*/
|
||||
if (sscanf(argv[1], "%d/%d/%d", &date.tm_mday, &date.tm_mon, &date.tm_year) != 3) {
|
||||
fprintf(stderr, "Format de date invalide. Utilisez le format dd/mm/aa.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*La fonction mktime attend une année en nombre d'années depuis 1900*/
|
||||
date.tm_year += 100;
|
||||
/*La fonction mktime attend le mois en nombre de mois depuis janvier*/
|
||||
date.tm_mon--;
|
||||
|
||||
/*Initialisation des autres champs de la structure tm*/
|
||||
date.tm_hour = 0;
|
||||
date.tm_min = 0;
|
||||
date.tm_sec = 0;
|
||||
date.tm_wday = 0;
|
||||
date.tm_yday = 0;
|
||||
date.tm_isdst = -1; /*Indéterminé*/
|
||||
|
||||
/*Conversion de la structure tm en timestamp*/
|
||||
timestamp = mktime(&date);
|
||||
|
||||
if (timestamp == -1) {
|
||||
fprintf(stderr, "Erreur lors de la conversion de la date en timestamp.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*Conversion du timestamp en structure tm pour obtenir le jour de la semaine*/
|
||||
localtime_r(×tamp, &date);
|
||||
|
||||
/*Affichage du jour de la semaine*/
|
||||
const char *jours[] = {"dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"};
|
||||
printf("C'est un %s.\n", jours[date.tm_wday]);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
25
BUT1/DEV1.1/CM2_2/EntrainementDS2/SUJET3/conversion.c
Normal file
25
BUT1/DEV1.1/CM2_2/EntrainementDS2/SUJET3/conversion.c
Normal file
@@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc != 3) {
|
||||
fputs("Usage: ./a.out <valeur> <unité>\n",stderr);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
double valeur = atof(argv[1]);
|
||||
char unite = argv[2][0];
|
||||
|
||||
if (unite == 'c' || unite == 'C') {
|
||||
double pouces = valeur / 2.54;
|
||||
printf("%.2fin\n", pouces);
|
||||
} else if (unite == 'i' || unite == 'I') {
|
||||
double centimetres = valeur * 2.54;
|
||||
printf("%.2fcm\n", centimetres);
|
||||
} else {
|
||||
printf("Unité invalide. Utilisez 'cm' ou 'in'.\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
36
BUT1/DEV1.1/CM2_2/EntrainementDS2/SUJET3/de.c
Normal file
36
BUT1/DEV1.1/CM2_2/EntrainementDS2/SUJET3/de.c
Normal file
@@ -0,0 +1,36 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(void) {
|
||||
int resultat_lancer;
|
||||
unsigned char valeur_aleatoire;
|
||||
size_t octet_lu;
|
||||
/* On ouvre le fichier /dev/random */
|
||||
FILE* fichier_random = fopen("/dev/random", "r");
|
||||
|
||||
/* On vérifie qu'il s'ouvre bien*/
|
||||
if (fichier_random == NULL) {
|
||||
fputs("Erreur lors de l'ouverture de /dev/random", stderr);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* On lit un octet depuis /dev/random */
|
||||
octet_lu = fread(&valeur_aleatoire, sizeof(valeur_aleatoire), 1, fichier_random);
|
||||
/*On vérifie l'octet lu */
|
||||
if (octet_lu != 1) {
|
||||
fputs("Erreur lors de la lecture depuis /dev/random", stderr);
|
||||
fclose(fichier_random);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* On ferme le fichier /dev/random */
|
||||
fclose(fichier_random);
|
||||
|
||||
/* On calcule le résultat du dé (entre 1 et 6) */
|
||||
resultat_lancer = (valeur_aleatoire % 6) + 1;
|
||||
|
||||
/* On affiche le résultat */
|
||||
printf("%d\n", resultat_lancer);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
Reference in New Issue
Block a user