Bonjour a tous un petit coup pouce sur cette exo svp je vois pourtant simple mais..
Ce que doit faire votre programme :
Votre programme doit d'abord lire un entier décrivant votre position actuelle sur la route, sous la forme d'un nombre de kilomètres par rapport au début de la route. Ensuite, il doit lire un entier donnant le nombre de villages. Pour chaque village, il doit lire un entier décrivant la position de ce village le long de cette même route. Votre programme doit alors afficher le nombre de villages qui se trouvent à une distance inférieure ou égale à 50 km de votre position actuelle.
Exemple
entrée :
120
5
30
113
187
145
129
sortie :
3
Commentaires
Vous êtes à la position 120 et il y a donc trois villages à moins de 50 km : ceux aux positions 113, 145 et 129. Les deux autres villages sont trop lointains.
#include <stdio.h>
#define repeat(nb) for (int _loop = 1, _max = (nb); _loop <= _max; _loop++)
int position;
int nbvillage ;
int posVillage ;
int main()
{
scanf("%d %d" , &position,&nbvillage);
position=position-nbvillage;
scanf("%d",&posVillage );
if(nbvillage -posVillage <=50)
{
posVillage ++;
}
printf("%d",posVillage );
}
Essaye déjà de nous expliquer en français ce que tu ferais toi sans essayer de programmer. Parce que si tu n'arrives pas à expliquer ce qu'il faut faire tu ne pourras jamais produire un programme quelconque pour résoudre le problème.
Juste pour confirmer que répondre en français à White Crow est la première étape : ça permet de mettre de l'ordre dans les idées, c'est grâce à ça qu'on pourra écrire le plan du programme. Pour moi, c'est la bonne méthode.
(Une petite anecdote... Jusqu'à récemment, je donnais des cours de maths à domicile. J'ai remarqué que pour résoudre un problème de maths ils faisaient comme doub01 : ils essayaient de se lancer dans la résolution sans avoir un peu réfléchi. Et je faisais comme White Crow, je leur demandais : « pas si vite ! pour résoudre ce problème, dites-moi en français quelles étapes vous allez suivre ». Et presque toujours la réponse était : « je vais faire f'(x) = machin(x+2) au carré... la limite = l'inverse de (x+3)... AB = 3 AC - 2 AD... » ce genre de réponse. Moi j'attendais quelque chose comme « je vais étudier les variations de la fonction, j'en déduirai l'existence d'un minimum et je regarderai à quelle condition il est unique ». Je vois qu'en programmation on rencontre les mêmes difficultés...)
Supposons que je suis à la position 200 et j'ai un village à 175 et un autre à 225. Dois-je tenir compte de celui à 175? Je veux faire ressortir l'idée de la valeur absolue quand on calcule la distance.
Le Tout est souvent plus grand que la somme de ses parties.
Supposons que je suis à la position 200 et j'ai un village à 175 et un autre à 225. Dois-je tenir compte de celui à 175? Je veux faire ressortir l'idée de la valeur absolue quand on calcule la distance.
Ben oui. Une distance, c'est une distance. Peu importe que ce soit en avant ou en arrière.
Quand tu parles de valeur absolue, je trouve que tu as le même défaut que mes anciens élèves et que doub01 : tu te jettes trop vite dans les calculs
(De toute façon, ce qui bloque doub01 pour le moment, c'est le concept de boucle et la nécessité de s'en servir. Je crois que c'est là où White Crow veut en venir, et je pense qu'il s'y prend bien.)
Merci Robun, mais je ne suis pas pédagogue pour un sou.
J'ai les mêmes problèmes avec les jeunes dèv qui foncent tête baissée pour pisser du code en continu à vouloir réfléchir en C, Java ou Python sans même prendre le temps de réfléchir tout court.
Bonjour je vous merci pour vos réponse pertinente ce exactement cela "pisser du code" je parti tête baisser , je vais pas aller loin..
en premier notre position depuis le début de la route (en kilomètres) , et en deuxième temps le nombre de lieux (village)
pour apres donner un par un la position d'un village , le nombre de villages qui se trouver a une distance <=50 donc la je dois ajouter un totalvillages
C'est pas très clair, mais je crois que tu as compris le principe.
doub01 a écrit:
pour apres donner un par un la position d'un village , le nombre de villages qui se trouver a une distance <=50 donc la je dois ajouter un totalvillages
C'est ça l'idée, en effet : les positions des villages doivent être saisies une par une (c'est pourquoi il faut une boucle). Mais je ne sais pas si tu as compris que les calculs de distance nécessitent aussi une boucle (la même ? pas la même ?...)
La solution t'est littéralement donnée. Tu n'as pas besoin de réfléchir à quelle solution tu vas implémenter on te la donne :
Votre programme doit d'abord lire un entier décrivant votre position actuelle sur la route, sous la forme d'un nombre de kilomètres par rapport au début de la route.
int position_actuelle;
scanf("%d", &position_actuelle);
Ensuite, il doit lire un entier donnant le nombre de villages.
int nombre_villages;
scanf("%d", &nombre_villages);
Pour chaque village,
repeat(nombre_villages) {
il doit lire un entier décrivant la position de ce village le long de cette même route.
int position_village;
scanf("%d", position_village);
Votre programme doit alors afficher le nombre de villages qui se trouvent à une distance inférieure ou égale à 50 km de votre position actuelle.
Voilà la phrase la plus compliquée de l'énoncé de la solution. On te dit que tu va devoir compter le nombre de villages qui sont à moins de 50km de toi. Compter → ça veut dire avoir une variable qui va comptabiliser ce nombre de villages. Il aurait fallu la déclarer avant le repeat →
int nombre_villages_a_moins_de_50km=0;
repeat(nombre_villages) {
ensuite il faut savoir comment calculer la distance qui te sépare un village. Ça c'est pas compliqué, tu prends le km sur lequel est le village et soustrais le kilomètre sur lequel tu es. Si cet écart est positif alors c'est la distance, si cet écart est négatif alors il faut prendre l'opposé de ce nombre pour avoir la distance.
int ecart = position_actuelle - position_village;
int distance_au_village=0;
if (ecart<0) {
distance_au_village = - ecart;
} else {
distance_au_village = ecart;
}
Maintenant qu'on a calculé la distance au village, on augmente le nombre de villages à moins de 50km si cette distance est inférieure ou égale à 50 :
Maintenant tu peux te dire qu'il y a une autre manière de faire :
Si tu es en position P, alors tu cherches le nombre de villages qui sont à des positions comprises entre P-50 et P+50 … En gros tu augmente le nombre de villages à moins de 50 km si leur position est supérieure ou égale à P-50 ET inférieure ou égale à P+50.
Essaye aussi d'implémenter cette solution.
Planning de la journée france ioi
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
voila ce que j'ai pu obtenir ce pas encore ca