Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Un challenge à relever | |
| | Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Un challenge à relever Mar 18 Juil 2017 - 10:57 | |
| Y a-t-il quelqu’un pour relever ce challenge ? - Challenge à relever:
La boulangerie
Une boulangerie est ouverte de 7 heures à 13 heures et de 16 heures à 20 heures, sauf le lundi après-midi et le mardi toute la journée. On suppose que l’heure h est un entier entre 0 et 23. Le jour j code 0 pour lundi, 1 pour mardi, etc.
Ecrire une procédure qui reçoit le jour et l’heure comme paramètres, puis affiche si la boulangerie est ouverte ou fermée.
Il n'y a rien à gagner, sauf la satisfaction personnelle d'avoir tenté sa chance. ça serait aussi une bonne occasion de voir différentes solutions pour un même problème. Je posterai ma solution dans l'après-midi. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un challenge à relever Mar 18 Juil 2017 - 13:49 | |
| | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Un challenge à relever Mar 18 Juil 2017 - 14:45 | |
| C'est bien ça, j'aime bien les challenges moi - ma solution:
- Code:
-
dim jour%,heure%
jour%=0 heure%=13
etat_boulangerie(jour%,heure%)
END ' sub etat_boulangerie(jour%,heure%) dim_local horaire_ouverture$(1,6) ' horaire_ouverture$(0,0)="lundi" horaire_ouverture$(0,1)="mardi" horaire_ouverture$(0,2)="mercredi" horaire_ouverture$(0,3)="jeudi" horaire_ouverture$(0,4)="vendredi" horaire_ouverture$(0,5)="samedi" horaire_ouverture$(0,6)="dimanche" ' ' horaires d'ouvertures codés en binaire, 2^7 + 2^8 + ... horaire_ouverture$(1,0)="16256" :' lundi 7/13 horaire_ouverture$(1,1)="0" :' mardi 0 horaire_ouverture$(1,2)="2047872" :' mercredi 7/13 16/20 horaire_ouverture$(1,3)="2047872" :' jeudi 7/13 16/20 horaire_ouverture$(1,4)="2047872" :' vendredi 7/13 16/20 horaire_ouverture$(1,5)="2047872" :' samedi 7/13 16/20 horaire_ouverture$(1,6)="2047872" :' dimanche 7/13 16/20 ' if bin_and(val(horaire_ouverture$(1,jour%)),power(2,heure%))>0 print "Le ",horaire_ouverture$(0,jour%),", à ",heure%," h, la boulangerie est ouverte :-)" else print "Le ",horaire_ouverture$(0,jour%),", à ",heure%," h, la boulangerie est fermée :-(" end_if end_sub
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un challenge à relever Mar 18 Juil 2017 - 17:14 | |
| - JL35 a écrit:
- Ça mange pas d'pain.
Non, ça mange pas d’pain ; ça mange du gâââteau ! @silvermann Bravo ! Belle approche, cette façon de faire : le codage en binaire, fallait y penser ! Une remarque tout de même : Il est souhaitable, voire nécessaire de blinder son code. Essaye de passer l’un des paramètres en dehors des limites autorisées (jour ou heure négative ou supérieure respectivement à 6 et 23) Personne d'autre ne veut participer ? Je reporte ma solution à plus tard. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un challenge à relever Mar 18 Juil 2017 - 18:45 | |
| - Voici ma solution:
- Code:
-
rem ============================================================================ rem La boulangerie rem ============================================================================ rem Une boulangerie est ouverte de 7 heures à 13 heures et de 16 heures à 20 heures, rem sauf le lundi après-midi et le mardi toute la journée. rem On suppose que l’heure h est un entier entre 0 et 23. rem Le jour j code 0 pour lundi, 1 pour mardi, etc. rem ============================================================================ rem Ecrire une procédure qui reçoit le jour et l’heure comme paramètres, puis rem affiche si la boulangerie est ouverte ou fermée. rem ============================================================================
Is_Bakery_Open(3,12) : ' <--- Jeudi , 12 h : Ouverte Is_Bakery_Open(0,15) : ' <--- Lundi , 15 h : Fermée Is_Bakery_Open(1,10) : ' <--- Mardi , 10 h : Fermée Is_Bakery_Open(6,11) : ' <--- Dimanche , 11 h : Ouverte
end rem ============================================================================ SUB Is_Bakery_Open(jour%,heure%) if variable("ouverte") = 0 then dim ouverte dim_local j,h, jour$ j = jour% : h = heure% if (j < 0) or (j > 6) message "!!! Erreur sur le jour !!!" : exit_sub end_if if (h < 0) or (h > 23) message "!!! Erreur sur l'heure !!!" : exit_sub end_if select j case 0 : jour$ = "lundi" case 1 : jour$ = "mardi" case 2 : jour$ = "mercredi" case 3 : jour$ = "jeudi" case 4 : jour$ = "vendredi" case 5 : jour$ = "samedi" case 6 : jour$ = "dimanche" end_select ' Voici l'expression logique qui répond à la question ' _______________________________________________________________________________ ' | | if (h >= 7) and (h <= 13) and (j <> 1) or (h >= 16) and (h <= 20) and (j > 1) ' |_______________________________________________________________________________| ' ouverte = 1 message jour$ + " à " + str$(h) + " h" + chr$(13) + "La boulangerie est ouverte" else ouverte = 0 message jour$ + " à " + str$(h) + " h" + chr$(13) + "La boulangerie est fermée !" end_if END_SUB rem ============================================================================
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 18 Juil 2017 - 18:51 | |
| Voilà ma contribution : - Spoiler:
- Code:
-
height 0,200 width 0,350 top 0,50 left 0,50
font_name 0,"arial" font_size 0,8 font_bold 0
alpha 1 top 1,50 left 1,50 width 1,width_client(0)-100
ShopOpenClose(Date_Day,Date_Month,Date_Year,Time_hour,Time_minute,Time_second)
end
sub ShopOpenClose(Dd%,Dm%,Dy%,Th%,Tm%,Ts%) dim_local retour%,js%,H%,Laps%,Sem$(6),a$,res%,i% a$="Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche," for i%=0 to 6 Sem$(i%)=left$(a$,instr(a$,",")-1) if i%<6 a$=right$(a$,len(a$)-instr(a$,",")) end_if next i% js%=Dy% if Dm%<3 : js%=js%-1 : end_if js%=int(23*Dm%/9)+Dd%+4+Dy%+int(js%/4)-int(js%/100)+int(js%/400) if Dm%>=3 : js%=js%-2 : end_if res%=(js%-7*int(js%/7))-1 H%=(Th%*3600)+(Tm%*60)+Ts%
if H%>(7*3600) and H%<(13*3600) if res%=1 : retour%=0 : else : retour%=1 : end_if else if H%>(16*3600) and H%<(20*3600) if res%=0 or res%=1 : retour%=0 : else : retour%=1 : end_if else retour%=0 end_if end_if if Retour%=1 caption 1,Sem$(res%)+chr$(13)+Time$+chr$(13)+"La boulangerie est ouverte !" else caption 1,Sem$(res%)+chr$(13)+Time$+chr$(13)+ "La boulangerie est fermée !" end_if end_sub
J' ai triché, un peu, en repiquant une procédure pour retrouver le jour de la semaine dans la besace du mag. Comme l' interdiction n' était pas dans les contraintes... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 18 Juil 2017 - 19:04 | |
| @ Papydall, Ton challenge m' a donné une idée d' application. Après tout qui a tous les horaires des commerçants ou médecins en tête ? Pas moi en tout cas. Une petite appli pourrait avoir son utilités. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un challenge à relever Mar 18 Juil 2017 - 20:25 | |
| Bravo Yannick. Bien que ton code ne réponde pas exactement à ce qui est demandé (deux paramètres : jour et heure), ton approche du problème est intéressante. - Citation :
- Ton challenge m' a donné une idée d' application.
Après tout qui a tous les horaires des commerçants ou médecins en tête ? Bon, je t’ai donné une idée d’application, alors fais-nous bénéficier de ton savoir-faire. Pour un même problème de programmation, il y a autant de solutions que de codeurs, voire plus. Qui d'autre veut bien poster sa solution ? | |
| | | Contenu sponsorisé
| Sujet: Re: Un challenge à relever | |
| |
| | | | Un challenge à relever | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |