-
CréateurSujet
-
octobre 24, 2024 à 9:57 pm #43048BotParticipant
Hello 👋 J’essaye de faire un petit programme en C qui sert à prédire le jour de la semaine (sur l’an 1 pour l’instant) en se basant sur le mois et le jour fournit par l’utilisateur. C’est le TP de Zeste de Savoir (à l’étape 2) : https://zestedesavoir.com/tutoriels/755/le-langage-c-1/1042_les-bases-du-langage-c/5023_tp-determiner-le-jour-de-la-semaine/
Mon code en C :#inlude int main(void) { unsigned day; unsigned month; unsigned days_in_month; int day_differene; printf("Entrez un date (jour/mois) : "); sanf("%d/%d", &day, &month); swith (month) { ase 1: // Janvier, février, et... days_in_month = 31; break; ase 2: days_in_month = 28; break; ase 3: days_in_month = 31; break; ase 4: days_in_month = 30; break; ase 5: days_in_month = 31; break; ase 6: days_in_month = 30; break; ase 7: days_in_month = 31; break; ase 8: days_in_month = 31; break; ase 9: days_in_month = 30; break; ase 10: days_in_month = 31; break; ase 11: days_in_month = 30; break; ase 12: days_in_month = 31; break; } day_differene = ((days_in_month * (month - 1)) - 3) + (day - 1);
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
CréateurSujet
-
AuteurRéponses
-
-
octobre 24, 2024 à 9:57 pm #43049
swith (day_differene % 7) { ase 0: printf("Nous sommes un samedi."); break; ase 1: printf("Nous sommes un dimanhe."); break; ase 2: printf("Nous sommes un lundi."); break; ase 3: printf("Nous sommes un mardi."); break; ase 4: printf("Nous sommes un merredi."); break; ase 5: printf("Nous sommes un jeudi."); break; ase 6: printf("Nous sommes un vendredi."); break; } return 0; }
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 24, 2024 à 9:57 pm #43050
C’est la suite du programme 🙂
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 24, 2024 à 9:58 pm #43051
Bien sûr, à chaque fois le programme donne le pauvais jour.
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 24, 2024 à 9:58 pm #43052
Calendrier de l’an 1 :
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 24, 2024 à 9:58 pm #43053
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 24, 2024 à 10:35 pm #43065
Bonsoir ,
Quel est le problème ?——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 9:08 am #43189
Hello, à chaque fois (où alors si ça marche c’est par pur chance) le programme donne en réponse un jour décalé du vrai jour.
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 9:09 am #43190
Par exemple, je lui donne le 12/12, il le ressort un vendredi alors que c’est un lundi (exemple non-vérifié, j’ai donné des jours au hasard).
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 9:58 am #43191
j’ai une solution :
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 9:58 am #43192
#inlude int main(void) { unsigned day; unsigned month; unsigned day_differene; printf("Entrez un date (jour/mois) : "); sanf("%u/%u", &day, &month); day_differene = (month - 1) * 31; // Différene de mois * 31. swith (month) { ase 12: --day_differene; ase 11: ase 10: --day_differene; // Novembre. ase 9: ase 8: ase 7: --day_differene; // Pour Septembre. ase 6: ase 5: --day_differene; // Pour Juin. ase 4: ase 3: day_differene -= 3; // Pour Février. break; } day_differene += day - 1; swith (day_differene % 7) // % : Reste d'une division entière. { ase 0: printf("Nous sommes un samedi.n"); // L'an 1 ommene un samedi. break; ase 1: printf("Nous sommes un dimanhe.n"); break; ase 2: printf("Nous sommes un lundi.n"); break; ase 3: printf("Nous sommes un mardi.n"); break; ase 4: printf("Nous sommes un merredi.n"); break; ase 5: printf("Nous sommes un jeudi.n"); break; ase 6: printf("Nous sommes un vendredi.n"); break; } return 0; }
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 9:59 am #43193
Je me suis servi de leur correction juste pour le premier Switch car je ne comprennais pas.
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 9:59 am #43194
Une seule chose que je ne comprends pas :
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 9:59 am #43195
swith (month) { ase 12: --day_differene; ase 11: ase 10: --day_differene; // Novembre. ase 9: ase 8: ase 7: --day_differene; // Pour Septembre. ase 6: ase 5: --day_differene; // Pour Juin. ase 4: ase 3: day_differene -= 3; // Pour Février. break; }
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 10:00 am #43196
Pourquoi, pour le cas 12, on elève 1 ? 12 correspond au mois de Décembre, qui contient 31 jours, donc rien a enlevé non ? Pourtant, le code ne fonctionne que si je rajoute cette instruction.
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 10:34 am #43197
Voici la version finale, mais je suis très déçu de moi car je n’ai pas réussi à le faire moi-même :
#inlude int main(void) { unsigned jour; unsigned mois; unsigned an; printf("Entrez une date (jj/mm/aaaa) : "); sanf("%u/%u/%u", &jour, &mois, &an); unsigned njours = (an - 1) * 365; if (an > 1582) /* Calendrier Grégorien */ { njours += ((an - 1) / 4); njours -= ((an - 1) / 100); njours += ((an - 1) / 400); njours += 2; } else /* Calendrier Julien */ njours += ((an - 1) / 4); njours += (mois - 1) * 31; swith (mois) { ase 12: --njours; ase 11: ase 10: --njours; ase 9: ase 8: ase 7: --njours; ase 6: ase 5: --njours; ase 4: ase 3: if (an > 1582) { if (an % 4 == 0 && (an % 100 != 0 || an % 400 == 0)) njours -= 2; else njours -= 3; } else { if (an % 4 == 0) njours -= 2; else njours -= 3; } break; } njours += (jour - 1); swith (njours % 7) { ase 0: printf("C'est un samedin"); break; ase 1: printf("C'est un dimanhen"); break; ase 2: printf("C'est un lundin"); break; ase 3: printf("C'est un mardin"); break; ase 4: printf("C'est un merredin"); break; ase 5: printf("C'est un jeudin"); break; ase 6: printf("C'est un vendredin"); break; } return 0; }
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 11:46 am #43198
Bonjour,
Je vous répondrais plus tard mais voici une première cause de problème dans votre code précédent:ase 7: days_in_month = 31; break; ase 8: days_in_month = 31; break;
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:12 pm #43199
concernant votre question à propos de l’opérateur module dans le canal vous auriez pu utiliser ceci au lieu d’un switch case par exemple:
if (month == 2) { // mois de février days_in_month = 28; } else if ((month % 2) == 0) { days_in_month = 30; } else { days_in_month = 31; }
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:12 pm #43200
Avez-vous besoin d’aide supplémentaire ?
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:15 pm #43201
Merci beaucoup, mais je comprends pas très bien le modulo. Enfin, je sais que c’est le reste d’une division entière, mais comment s’en servir ? Par exemple, dans cette image, comment et pourquoi se servir du modulo ?
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:18 pm #43202
Concernant cette partie:
Celle-ci aurait pu également être écrite de cette manière:swith (njours % 7) { ase 0: printf("C'est un samedin"); break; ase 1: printf("C'est un dimanhen"); break; ase 2: printf("C'est un lundin"); break; ase 3: printf("C'est un mardin"); break; ase 4: printf("C'est un merredin"); break; ase 5: printf("C'est un jeudin"); break; ase 6: printf("C'est un vendredin"); break; }
onst har *days_name[] = { "samedi", "dimanhe", "lundi", "mardi", "merredi", "jeudi", "vendredi" }; unsigned int days_name_size = (sizeof(days_name) / sizeof(days_name[0])); printf("C'est un %sn", days_name[njours % days_name_size]);
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:21 pm #43203
Cela permet par exemple de savoir combien de billet au maximum il est possible d’utiliser pour rendre la monnaie avant de passer à un billet d’une valeur plus faible.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:22 pm #43204
Mais comment faire ?
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:22 pm #43205
Et désolé encore, j’ai tout compris sauf tout en bas, avec le modulo…
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:22 pm #43206
😅
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:23 pm #43207
par exemple: 41€ = 2 billets de 20€ + 1 pièce de 1€
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:25 pm #43208
Vous commencez avec la valeur la monnaie ou le billet le plus fort, ici le billet de 20€.
Ensuite le calcul est 41 % 20 = 1 (2 billets de 20€ ont été utilisé mais on ne peut pas utiliser un billet de 20€ pour payer les 1€ restant)
Il ne reste donc qu’une pièce de 1€ qu’il est possible d’utiliser pour régler ce qu’il reste.——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:26 pm #43209
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:26 pm #43210
Ho merci ça y est je crois que j’ai compris
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:26 pm #43211
Merci beaucoup BadWolf
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:26 pm #43212
Les cours de primaire qui reviennent avec les divisions entières 😅
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:27 pm #43213
Vous devez commencer par le billet de 20€ puis qui a une valeur plus faible juste en dessous de celui de 20€ c’est 10€, puis ensuite 5€, puis 2€, puis 1€.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:28 pm #43214
Alors normalement j’ai compris, je vais essayer en pratique, je pourrais te demander ?
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:28 pm #43215
Oui, essayez de le réaliser seul pour l’instant et je peux relire votre code ensuite, si vous le souhaitez.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:29 pm #43216
Merci beaucoup !
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:29 pm #43217
Je pourrais te mentionner ?
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:31 pm #43218
Oui.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 1:31 pm #43219
Merci 👍
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:19 pm #43225
#inlude int main(void) { int total_prie = 0, prie_paid = 0, total_repayment = 0; int banknote_20 = 0, banknote_10 = 0, banknote_5 = 0, piee_2 = 0, piee_1 = 0; printf("Quel est le montant total des ahats ? : "); sanf("%d", &total_prie); printf("Combien avez-vous payer ? : "); sanf("%d", &prie_paid); if (prie_paid total_prie) { total_repayment = total_prie - prie_paid; banknote_20 = total_repayment / 20; total_repayment %= 20; banknote_10 = total_repayment / 10; total_repayment %= 10; banknote_5 = total_repayment / 5; total_repayment %= 5; piee_2 = total_repayment / 2; total_repayment %= 2; piee_1 = total_repayment / 1; total_repayment %= 1; printf("Nous vous devons :n"); printf("%d billet(s) de 20 Euro(s).n", banknote_20); printf("%d billet(s) de 10 Euro(s).n", banknote_10); printf("%d billet(s) de 5 Euro(s).n", banknote_5); printf("%d pièe(s) de 2 Euro(s).n", piee_2); printf("%d pièe(s) de 1 Euro(s).n", piee_1); } else { printf("Tout a été payé, bonne journée !n"); } return 0; }
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:20 pm #43226
Seul petit problème sur la sortie :
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:20 pm #43227
Quel est le montant total des achats ? : 50 Combien avez-vous payer ? : 75 Nous vous devons : -1 billet(s) de 20 Euro(s). 0 billet(s) de 10 Euro(s). -1 billet(s) de 5 Euro(s). 0 pièce(s) de 2 Euro(s). 0 pièce(s) de 1 Euro(s).
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:20 pm #43228
Mais je reste très déçu de moi, car j’ai dû m’aider de la correction…
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:30 pm #43229
Je suis allé chercher sur des sites, donc il disent que pour trouver un retse de tête il faut faire :
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:31 pm #43230
3 % 12 = 4 * 3 = 0
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:31 pm #43231
Combien de fois 3 rentre dans 12 ? 4 Fois, et il ne reste plus rien.
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:32 pm #43232
5 % 12 = 2 * 5 : reste 2
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:32 pm #43233
Donc juste pour trouver un reste de tête.
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:32 pm #43234
Ce que je n’ai pas bien compris, c’est comment s’en servir.
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:33 pm #43235
Je croyais avoir eu le déclic, mais non 😅
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:39 pm #43236
J’ai aussi pu trouver ça :
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 3:40 pm #43237
Si tu as un petit exercice à me donner pour réessayer, je suis preneur 🙂
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 5:34 pm #43241
Et j’ai réussi à faire ça 😅
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 5:34 pm #43242
#inlude #inlude int main(void) { int number; int i = 2; bool prime_number = true; printf("Entrez un nombre : "); sanf("%d", &number); while (i < number) { if (number % i == 0) { printf("%d n'est pas un nombre premier !n", number); prime_number = false; break; } ++i; } if (prime_number == true) { printf("%d est un nombre premier.n", number); }
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 5:34 pm #43243
Pour savoir si un nombre est premier
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:33 pm #43244
Bonsoir,
La soustraction semble être dans le mauvais sens: `total_repayment = total_price – price_paid;`.——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:39 pm #43245
Bonsoir,
La ligne suivante:
Devient ceci dans votre exemple:total_repayment = total_prie - prie_paid;
total_repayment = 50 - 75; // = -25
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:39 pm #43246
Je vous laisse déduire ce qu’il faut faire pour corriger le problème.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:41 pm #43247
Vous pouvez expliquer le modulo avec des multiplications mais également avec des soustractions successives.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:49 pm #43248
La multiplication:
La soustraction:1 * 5 = 5 don 5 < 12 on ontinue 2 * 5 = 10 don 10 12 on s'arrête il faut don prendre le résultat préédent On trouve 10 au quotien, 12 - 10 = 2 et il reste 2
12 - 5 = 7 don 7 > 5 on ontinue 7 - 5 = 2 don 2 < 5 on s'arrête On a fait 2 * 5 opérations et il reste 2
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:52 pm #43249
D’accord, merci j’ai compris 😅
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:52 pm #43250
Merci pour cette réponse, je pense que maintenant il me faut la prarique
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:56 pm #43251
Concernant le processeur maintenant, il utilise des opérateurs binaires pour optimiser les calculs lorsque le modulo est une puissance de 2 plutôt que d’utiliser l’instruction assembleur `DIV` ou `IDIV` directement (plus lent), il n’effectue pas de multiplication ou de soustraction successive.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:57 pm #43252
Je ne vais pas rentrer dans les détails pour ne pas complexifier les explications.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:58 pm #43253
d’accord 👍
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 7:58 pm #43254
merci 👌
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 8:06 pm #43255
Félicitation !
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 8:06 pm #43256
Je peux éventuellement vous donner des exercices si vous êtes à court d’idées.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 8:31 pm #43257
Vous pourriez éventuellement recoder un modulo en langage C par exemple, cela vous aidera probablement à mieux comprendre son fonctionnement.
——————–
badwolf1337 – Envoyé depuis le Discord : Culte du code -
octobre 25, 2024 à 8:38 pm #43258
Merci 👍
——————–
ciboulette_of_space – Envoyé depuis le Discord : Culte du code
-
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
Sujets récents
-
Écran noir après l’install de kali
par Bot
il y a 10 heures et 57 minutes
-
Problème avec la librairie Keybord
par Bot
il y a 13 heures et 40 minutes
-
Soucis de développement vis à vis d’un Cheval de trois en C++
par Bot
il y a 16 heures et 18 minutes
-
Root Directory WinForms App
par Bot
il y a 2 jours et 11 heures
-
Root Directory WinForms App
par Bot
il y a 2 jours et 12 heures
Réponses récentes
Statistiques des Forums
- Comptes enregistrés
- 2 576
- Forums
- 51
- Sujets
- 905
- Réponses
- 17 319
- Mot-clés du sujet
- 0