Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/02/2013, 01h18   #1
krolle666
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
Par défaut Tournoi de football [matchs de poule]

Désolé d'abuser à ce point de votre gentillesse mais je passe sur un autre exercice et pour le coup je n'ai même pas un but de code à vous proposer, je cale à 100%. Voici l'énoncé:

On souhaite implémenter une gestion (fortement simplifiée) des tableaux de classement lors d’un tournoi de foot. On se concentre à la phase dite des “matchs de poule”.
On ne regardera qu’un seul groupe avec quatre équipes participantes (#define N 4).
Les équipes de cette poule sont représentées par un tableau de chaînes de caractères intitulé équipes. On l’initialise avec les noms de quatre équipes au début du programme principal. Une équipe est ainsi associée à un numéro qui correspond à sa place dans le tableau équipes (0 à 3).

1. Ecrivez le code pour initialiser le tableau équipes avec les noms des quatre équipes de la même poule.
Aide : Utilisez le type string pour les noms des équipes qui sont des chaînes de caractère constantes.
Un deuxième tableau intitulé classement stockera le nombre de points. Il contiendra une case par équipe. Ce tableau sera mis à jour après chaque match. Le gagnant se placera en première position, le deuxième en deuxième position, etc. du tableau. On affichera ce tableau après chaque match, en associant les noms d’équipes à la bonne place dans le classement.

2. Ecrivez une fonction initialiser_classement qui initialise les points dans le classement à zéro.

3. Ecrivez une fonction afficher_classement qui prend en argument le tableau d’équipes et le tableau de classement et affiche, à un moment donné, le nom de l’équipe, sa position dans le classement et le nombre de points obtenus jusque-là.
L’affichage souhaité est donné ci-dessous.
Code :
1
2
3
4
angleterre no. : 1 : 6
espagne no. : 2 : 4
france no. : 3 : 3
grece no. : 4 : 1
4. Quel type d’algorithme sera nécessaire pour mettre en place la mise à jour du tableau ? Ecrivez une fonction mise_a_jour qui met à jour le tableau et insérez-la au bon endroit dans la fonction match.

5. Ecrivez une fonction match qui attribue des points.
On modélise l’issue d’un match par les index des deux équipes (entre 0 et 3) et par un entier 0,1,2 indiquant s’il s’agit d’un match nul (égalité entre équipes) ou si la première ou la deuxième a gagné. Cet entier est tiré au hasard (utiliser la fonction de la bibliothèque CINI prévue à ce propos).
Un match gagné apportera 3 points, un match nul apportera un point, un match perdu aucun point. Ce nouveau score sera attribué aux deux équipes impliquées dans le match. Il faut prévoir l’affichage du score qui s’effectuera dans le programme principal. Il faut également mettre à jour le classement pour prendre en compte le nouveau score (appel de la fonction mise_a_jour).

6. Ecrivez le programme principal. Il faut faire de sorte que chaque équipe joue contre chaque autre équipe. L’affichage souhaité est le suivant :

Code :
1
2
3
4
5
6
Match angleterre contre espagne : 0
Match france contre espagne : 2
Match france contre angleterre : 0
Match grece contre espagne : 2
Match grece contre angleterre : 2
Match grece contre france : 1
7. On souhaite étendre la gestion à plusieurs groupes de poules (par exemple, quatre groupes intitulés A,B,C et D). Répondez aux questions suivantes, en donnant des bouts de code C :
– Comment en tenir compte ? Faut-il modifier la structure des boucles ?
– Comment faut-il modifier le tableau représentant le classement ?
– Comment faire (sans disposer de tableau ASCII) pour afficher une lettre majuscule représentant le groupe dans la fonction afficher_tableau ?


Donc des la première question je n'ai aucune idée de comment intégrer ma suite de caractère à un tableau. En me renseignant par si par là je suis tombé sur une fonction strcopy il me semble mais je ne suis pas censé l'utiliser je pense. comment implémenter que telle case d'un tableau (numéro d'équipe) représente telle chaîne de caractère ?

Et plus ou moins pareil pour le reste j'ai des bribes d'idées mais je n'arrive pas à les mettre en place j'ai l'impression qu'il me manque quelque chose.

Donc serait possible qu'une âme charitable me donne quelques conseils sur la marche à suivre ? ( je ne demande absolument pas que l'on écrive le code à ma place bien entendu mais que l'on me mette sur la bonne voie).

Merci d'avance,
krolle666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2013, 07h18   #2
LinuxUser
Membre éprouvé
 
Avatar de LinuxUser
 
Inscription : avril 2007
Messages : 749
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 749
Points : 428
Points : 428
Il faut commencer par le commencement, bonne lecture:
http://fr.wikibooks.org/wiki/Program..._classe_string
http://www.cplusplus.com/reference/string/string/
http://cpp.developpez.com/faq/cpp/?page=strings
LinuxUser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2013, 08h37   #3
krolle666
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
Je vous montre mon état d'avancement:

Code :
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
31
32
33
34
#include <cini.h>
#define N 4
 
void initialiser_classement (int classement[], int taille) {
	int i;
 
	for (i = 0; i < taille; i++) {
		classement[i]=0;
	}
}
 
void afficher_classement (string equipes[], int classement[],int ordre[], int taille) {
	int i;
 
	for (i = 0; i < taille; i++) {
		printf("%s : ", equipes[i]);
		printf("%d : ", ordre[i]);
		printf("%d \n", classement[i]);
	}
}
 
 
int main() {
 
	string equipes[N] = {"France","Allemagne","Angleterre","Espagne"};
	int ordre[N] = {1,2,3,4};
	int classement[N] = {4,0,0,0};
 
	initialiser_classement(classement, N);
 
	afficher_classement(equipes, classement,ordre, N);
 
	return 0;
}
Je suis donc à a question 4 sans aucune conviction car je ne pense pas que lorsque mes tableaux auront des valeurs, ma fonction Afficher_classement me l'affichera dans l'ordre. Ensuite je suppose que pour la mise à jour il faut que j'utilise l'algorithme de Tri par insertion, mais je ne vois pas comment attribuer un ordre ( de 1 à 4) en fonction du classement (points reçu).

Encore merci d'avance,

PS: Merci beaucoup LinuxUser car même si je t'avoue que tes liens sur du C++ ne m'ont pas vraiment débloqué, ils m'ont tout de même permis de vérifier plusieurs de mes syntaxes et de me rendre compte que j'avais fait une faute de frappe sur mon code.
krolle666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2013, 22h53   #4
krolle666
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
vraiment personne pour m'aider a attribuer une equipe à un ordre et à un score ? car pour le moment j'ai mes fonctions:

Code :
1
2
3
4
5
6
7
8
9
10
void echanger(string equipes[], int classement[], int i, int j) {
	int aux; 
 
	aux = classement[i];
	equipes[i] = equipes[j];
	classement[i] = classement[j];
	equipes[j] = equipes[i];
	classement[j] = aux;
 
}
et

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void mise_a_jour (string equipes[], int classement[], int taille) {
 
	int i, ifin, i_max; 
	for (ifin = taille-1 ; ifin > 0 ; ifin--) {
     /* recherche de l’indice de la case contenant 
      le max dans un tableau d'indices [0.. ifin] */ 
      i_max = 0; 
      for (i = 1 ; i <= ifin ; i++) { 
         if (classement[i] < classement[i_max]) { 
            i_max = i;
		}
	}
	if (i_max != ifin) {
        /* le max n’est pas dans la derniere case */
         echanger(equipes, classement, i_max, ifin);
	 } 
 }
}
Ces fonctions me trient mon classement mais pas du tout mon tableau d’équipe, donc soit j'ai commis une erreur, soit je dois utiliser mon tableau ordre d'une autre façon.

Merci,
krolle666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2013, 11h07   #5
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 496
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 496
Points : 32 290
Points : 32 290
Envoyer un message via MSN à Médinoc
Ta fonction d'échange est incorrecte quant aux noms d'équipe.
Code C++ :
1
2
3
4
5
6
7
8
#include <algorithm>
#include <string>
using namespace std;
 
void echanger(string equipes[], int classement[], size_t i, size_t j) {
	swap(classement[i], classement[j]);
	equipes[i].swap(equipes[j]);
}
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h26.


 
 
 
 
Partenaires

Hébergement Web