18 réponses
Ça devient fatiguant chers admins...
Bonjour,
Voici quelques remarques sur votre gestion des tableaux qui peut générer des plantages :
- Exemple avec Sport() :
"const char Sport[10][10]={{"ski"}, {"hockey"}, {"football"}, {"soccer"},
{"athlete"}, {"natation"}, {"basketball"}, {"ballon"},
{"cyclisme"}, {"sprint"}}; "
-> mauvaise initialisation du tableau comportant 100 entrées.
-> Question : avez vous besoin d'un tableau à 2 dimensions ?.
"nomchoisi = ((rand()+time(NULL))%20); "
-> Êtes vous sur que nomchoisi est bien compris dans l'intervalle [1,10] ainsi ?.
"while(true)
{
if(Sport[nomchoisi][temp]=='\0')
{
nblettre=temp;
break;
}
cout<<"-";
temp++;
} "
--> Vous ne gérez pas le dépassement de dimension du tableau via temp.
Salutation.
Bonjour,
Voici quelques remarques sur votre gestion des tableaux qui peut générer des plantages :
- Exemple avec Sport() :
"const char Sport[10][10]={{"ski"}, {"hockey"}, {"football"}, {"soccer"},
{"athlete"}, {"natation"}, {"basketball"}, {"ballon"},
{"cyclisme"}, {"sprint"}}; "
-> mauvaise initialisation du tableau comportant 100 entrées.
-> Question : avez vous besoin d'un tableau à 2 dimensions ?.
"nomchoisi = ((rand()+time(NULL))%20); "
-> Êtes vous sur que nomchoisi est bien compris dans l'intervalle [1,10] ainsi ?.
"while(true)
{
if(Sport[nomchoisi][temp]=='\0')
{
nblettre=temp;
break;
}
cout<<"-";
temp++;
} "
--> Vous ne gérez pas le dépassement de dimension du tableau via temp.
Salutation.
Bonjour,
Je n'ai pas tout lu mais je me permet ces premières remarques si vous voulez bien au niveau de votre gestion de tableaux :
- fonction Sport() :
"const char Sport[10][10]={{"ski"}, {"hockey"}, {"football"}, {"soccer"},
{"athlete"}, {"natation"}, {"basketball"}, {"ballon"},
{"cyclisme"}, {"sprint"}};"
--> Initialisation incorrecte d'un tableau bi-dimensionnel comportant 100 entrées : l'initialisation n'est faite que sur une colonne (ou une ligne - je ne m'en souviens plus).
-> Question : avez vous vraiment besoin d'un tableau à 2 dimensions ?.
"nomchoisi = ((rand()+time(NULL))%20);"
-> Êtes vous sur que nomchoisi est bien compris dans [1,10] ?.
"while(true)
{
if(Sport[nomchoisi][temp]=='\0')
{
nblettre=temp;
break;
}
cout<<"-";
temp++;
} "
-> Bien penser à gérer correctement temp pour eviter un dépassement de dimension du tableau.
Amicalement.
Je n'ai pas tout lu mais je me permet ces premières remarques si vous voulez bien au niveau de votre gestion de tableaux :
- fonction Sport() :
"const char Sport[10][10]={{"ski"}, {"hockey"}, {"football"}, {"soccer"},
{"athlete"}, {"natation"}, {"basketball"}, {"ballon"},
{"cyclisme"}, {"sprint"}};"
--> Initialisation incorrecte d'un tableau bi-dimensionnel comportant 100 entrées : l'initialisation n'est faite que sur une colonne (ou une ligne - je ne m'en souviens plus).
-> Question : avez vous vraiment besoin d'un tableau à 2 dimensions ?.
"nomchoisi = ((rand()+time(NULL))%20);"
-> Êtes vous sur que nomchoisi est bien compris dans [1,10] ?.
"while(true)
{
if(Sport[nomchoisi][temp]=='\0')
{
nblettre=temp;
break;
}
cout<<"-";
temp++;
} "
-> Bien penser à gérer correctement temp pour eviter un dépassement de dimension du tableau.
Amicalement.
Mon cher jihelge,
Avez vous compris cette section du code ? :
- Comment diantre fait il pour déterminer par cette procédure le nombre de lettres d'un mot stocké dans le tableau ? (si c'est bien ca).
"while(true)
{
if(Sport[nomchoisi][temp]=='\0')
{
nblettre=temp;
break;
}
cout<<"-";
temp++;
} "
Merci !.
Avez vous compris cette section du code ? :
- Comment diantre fait il pour déterminer par cette procédure le nombre de lettres d'un mot stocké dans le tableau ? (si c'est bien ca).
"while(true)
{
if(Sport[nomchoisi][temp]=='\0')
{
nblettre=temp;
break;
}
cout<<"-";
temp++;
} "
Merci !.
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 13:40
1 oct. 2008 à 13:40
while(true)
{
if(Sport[nomchoisi][temp]=='\0')
{
nblettre=temp;
break;
}
cout<<"-";
temp++;
}
Je suppose temp égal à zéro avant le while (mais mon dieu que cette forme de programmation est cochonne, n'y a-t-il plus de prof d'algo ?)
il boucle sur temp++; et avant il teste si le caract de rang temp est la marque de fin de chaine
si oui il affecte temp à nblettre et force la sortie de la boucle while(true) (quelle horeur).
on peut réécrire ce morceau ainsi :
nblettre = 0;
while( Sport[nomchoisi][nblettre]!='\0') nblettre++;
voilà tout
Personellement j'aurais fait :
nblettre = strlen(&Sport[nomchoisi]);
simplement
{
if(Sport[nomchoisi][temp]=='\0')
{
nblettre=temp;
break;
}
cout<<"-";
temp++;
}
Je suppose temp égal à zéro avant le while (mais mon dieu que cette forme de programmation est cochonne, n'y a-t-il plus de prof d'algo ?)
il boucle sur temp++; et avant il teste si le caract de rang temp est la marque de fin de chaine
si oui il affecte temp à nblettre et force la sortie de la boucle while(true) (quelle horeur).
on peut réécrire ce morceau ainsi :
nblettre = 0;
while( Sport[nomchoisi][nblettre]!='\0') nblettre++;
voilà tout
Personellement j'aurais fait :
nblettre = strlen(&Sport[nomchoisi]);
simplement
Rollin'babe !!
>
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
1 oct. 2008 à 14:03
1 oct. 2008 à 14:03
Mici,
nblettre = strlen(&Sport[nomchoisi]);
Ca m'a l'air en effet un peu plus cohérent pour calculer la longueur d'une chaine de caractères stockée dans un tableau (:>)...
M'disais ben ... j'en perdais mon latin ou alors je n'ai rien compris sur les subtilités des tableaux en C++.
___________________________________________________________________________________________________
"Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire un chti tour à la "foire du slip"
... une vrai bande de mariolles dis donc - ca fait pitié - chuis r'monté vite fait ben fait :>" (Jésus Christ).
nblettre = strlen(&Sport[nomchoisi]);
Ca m'a l'air en effet un peu plus cohérent pour calculer la longueur d'une chaine de caractères stockée dans un tableau (:>)...
M'disais ben ... j'en perdais mon latin ou alors je n'ai rien compris sur les subtilités des tableaux en C++.
___________________________________________________________________________________________________
"Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire un chti tour à la "foire du slip"
... une vrai bande de mariolles dis donc - ca fait pitié - chuis r'monté vite fait ben fait :>" (Jésus Christ).
SEVEN UP !!
aloush !!... une chtite grippe ??...
aloush !!... une chtite grippe ??...
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 20:13
1 oct. 2008 à 20:13
un peu en forme en cette soirée à l'île de La Réunion qui te salut !!!
;-))
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bah,
Tant que tu parles pas créole .... (hé hé).
Nan j'ai lancé un SEVEN UP !! au gars qui a lancé ce topic et qui ne s'est toujours pas manifesté ..
Tant que tu parles pas créole .... (hé hé).
Nan j'ai lancé un SEVEN UP !! au gars qui a lancé ce topic et qui ne s'est toujours pas manifesté ..
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 20:43
1 oct. 2008 à 20:43
Il avait un TP en retard il a pondu un truc et demain il viendra chercher le résultat de la battaille ?
:-))
AAAAAAAAAAAAhhhhhhhhhhhh O tempora, O mores !
:-))
AAAAAAAAAAAAhhhhhhhhhhhh O tempora, O mores !
Bonjours,
desole pour le retard, premierement j'habite montreal (canada). lorsque vous avez commencer a repondre j'etais en plein mon sommeil, et j'avais un cours durant le matin.
Voici ce que j'ai refais jusqua maintenat..je suis tjrs entrain de travailler dessus pour l'ameliorer.
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
char ecriture_du_fichier(int choix)
{
ofstream fichier("categorie.txt"), ios::out|ios::trunc); //ouverture en ecriture
//et effacement du fichier ouvert
if(fichier)
{
if(choix==1)//sport
{
unsigned char Sport[1][10]={{"ski"}, {"hockey"}, {"football"}, {"soccer"},
{"athlete"}, {"natation"}, {"basketball"}, {"ballon"},
{"cyclisme"}, {"sprint"}};
fichier.write((char*) Sport, sizeof(char));
}
if(choix==2)//musique
{
unsigned char Musique[1][5]={{"traditionnelle"},{"savante"},{"occidentale"},{"classique"},
{"symphonie"}};
fichier.write((char*) Musique, sizeof(char));
}
if(choix==3)//pays
{
unsigned char Pays[10][10]={{"canada"},{"etats-unis"}, {"france"}, {"espagne"},
{"angleterre"}, {"liban"}, {"russie"}, {"allemagne"},
{"brazil"}, {"venezuela"}};
fichier.write((char*) Pays, sizeof(char));
}
}
else cout<<"Impossible d'ouvrier le fichier!"<<endl;
fichier.close()
return 0;
}//end ecriture du fichier
char categorie(int choix)
{
do{
if(choix==1)//sport
{
}
if(choix==2)//musique
{}
if(choix==3)//pays
{}
}while(choix!='?');
}
int verifier (char categorie(), char test[], char lettre)
{
int i, verifier=0;
for(i=0; i<strlen(categorie());j++)
{
if(categorie[i]==lettre)
{test[i]==lettre;
verifier=1;
}
}
return verifier;
}//end verifier
int gagne(char test[], int Long)
{
int j=0, verifier=1;
while ((verifier==1) && (j<Long))
{
if (test[j]=='-')
{
verifier=0;
j=j+1;
}
return verifier;
}//end gagne
MERCI
desole pour le retard, premierement j'habite montreal (canada). lorsque vous avez commencer a repondre j'etais en plein mon sommeil, et j'avais un cours durant le matin.
Voici ce que j'ai refais jusqua maintenat..je suis tjrs entrain de travailler dessus pour l'ameliorer.
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
char ecriture_du_fichier(int choix)
{
ofstream fichier("categorie.txt"), ios::out|ios::trunc); //ouverture en ecriture
//et effacement du fichier ouvert
if(fichier)
{
if(choix==1)//sport
{
unsigned char Sport[1][10]={{"ski"}, {"hockey"}, {"football"}, {"soccer"},
{"athlete"}, {"natation"}, {"basketball"}, {"ballon"},
{"cyclisme"}, {"sprint"}};
fichier.write((char*) Sport, sizeof(char));
}
if(choix==2)//musique
{
unsigned char Musique[1][5]={{"traditionnelle"},{"savante"},{"occidentale"},{"classique"},
{"symphonie"}};
fichier.write((char*) Musique, sizeof(char));
}
if(choix==3)//pays
{
unsigned char Pays[10][10]={{"canada"},{"etats-unis"}, {"france"}, {"espagne"},
{"angleterre"}, {"liban"}, {"russie"}, {"allemagne"},
{"brazil"}, {"venezuela"}};
fichier.write((char*) Pays, sizeof(char));
}
}
else cout<<"Impossible d'ouvrier le fichier!"<<endl;
fichier.close()
return 0;
}//end ecriture du fichier
char categorie(int choix)
{
do{
if(choix==1)//sport
{
}
if(choix==2)//musique
{}
if(choix==3)//pays
{}
}while(choix!='?');
}
int verifier (char categorie(), char test[], char lettre)
{
int i, verifier=0;
for(i=0; i<strlen(categorie());j++)
{
if(categorie[i]==lettre)
{test[i]==lettre;
verifier=1;
}
}
return verifier;
}//end verifier
int gagne(char test[], int Long)
{
int j=0, verifier=1;
while ((verifier==1) && (j<Long))
{
if (test[j]=='-')
{
verifier=0;
j=j+1;
}
return verifier;
}//end gagne
MERCI
je ne sais plus comment vraiment continuer et mettre ensemble se problems (entre ce que j'ai fait en premier et se que jai pu corriger et ajouter), j'aurais besion un peut d'aide si cela est possible, merci d'avance.
Pour les tableaux bi-dimensionnel, lorsque j'ai fait un peut de recherche sur internet, j'ai trouver un porbleme concernant le pendu, et il utiliser les tableaux. je ne sais pas vraiment comment creer les tableaux et les mettres dans un fichier. C'est ce que j'ai compris d'apres l'enoncer.
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 21:07
1 oct. 2008 à 21:07
Bon,
met un peu d'ordre dans ta tête:
tu as trois catégories de mots : A,B,C
A[0..N] contient N mots au plus idem B et C
règle du jeu :
pour toute une partie
je choisi une catégorie,
on tire un mot au hasard
tantque pas cinq fautes ou réussit
lire une lettre et la comparer
Voilà tu as l'algorithme
chaque mot clé représente une fonction essentielle.
tu aura aussi besoin de transmettre des données aux fonctions et qu'elles te retournent un résultat quand cela est utile
et quelques variables globale.
Le jeu c'est le main()
Voilà très cher et lointain cousin
maintenant ce n'est qu'une question de langage c'est-à-dire rien.
met un peu d'ordre dans ta tête:
tu as trois catégories de mots : A,B,C
A[0..N] contient N mots au plus idem B et C
règle du jeu :
pour toute une partie
je choisi une catégorie,
on tire un mot au hasard
tantque pas cinq fautes ou réussit
lire une lettre et la comparer
Voilà tu as l'algorithme
chaque mot clé représente une fonction essentielle.
tu aura aussi besoin de transmettre des données aux fonctions et qu'elles te retournent un résultat quand cela est utile
et quelques variables globale.
Le jeu c'est le main()
Voilà très cher et lointain cousin
maintenant ce n'est qu'une question de langage c'est-à-dire rien.
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 21:24
1 oct. 2008 à 21:24
Un tableau est une suite d'objets du type faisant une succession d'octets organisé selon le schéma :
!---------!-----------!----------!
chaque intervalle correspondant à un objet l'un derrière l'autre.
En bi dimensionnel :
le premier [] designe le nombre d'objets si il n'y a qu'une ligne en revanche le nombre d'objet de la dimension suivante:
ainsi
char T[10][100]
représente un tableau bi dimensionnel de 10 lignes de 100 caractères.
on peut faire un tri ou quadri etc… dimensionnel !!!!
Se des objets du type de base. J'airais pu le faire avec une "struct" ou un objet d'une classe.
du genre : {string: mot; bolean : utilsé } pour indiquer un mot déjà utilisé dans la partie.
L'adresse d'une dimension peut être obtenu simplement par invocation de son nom ou adresse:
soit:
char sport[10][100]=…..
char *toto;
toto = sport affecte à toto l'adresse correspondant à &sport[0][0]
toto = sport[12] affecte à toto l'acresse &sport[12][0]
si
char tutu;
tutu= sport affect à tutu le contenu de sport[0][0];
de même
toto = sport[12]
toto = sport[12][5] le contenu de la ciquième lettre du 12ème mot.
Voila
cela répond t il a quelques unes de tes questions ?
!---------!-----------!----------!
chaque intervalle correspondant à un objet l'un derrière l'autre.
En bi dimensionnel :
le premier [] designe le nombre d'objets si il n'y a qu'une ligne en revanche le nombre d'objet de la dimension suivante:
ainsi
char T[10][100]
représente un tableau bi dimensionnel de 10 lignes de 100 caractères.
on peut faire un tri ou quadri etc… dimensionnel !!!!
Se des objets du type de base. J'airais pu le faire avec une "struct" ou un objet d'une classe.
du genre : {string: mot; bolean : utilsé } pour indiquer un mot déjà utilisé dans la partie.
L'adresse d'une dimension peut être obtenu simplement par invocation de son nom ou adresse:
soit:
char sport[10][100]=…..
char *toto;
toto = sport affecte à toto l'adresse correspondant à &sport[0][0]
toto = sport[12] affecte à toto l'acresse &sport[12][0]
si
char tutu;
tutu= sport affect à tutu le contenu de sport[0][0];
de même
toto = sport[12]
toto = sport[12][5] le contenu de la ciquième lettre du 12ème mot.
Voila
cela répond t il a quelques unes de tes questions ?
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 21:31
1 oct. 2008 à 21:31
dans le cas du pendu pourquoi sauvegarder les mots dans un fichier ???
Il me semble que tu as mal lu l'énoncé et qu'il s'agit plutot charger à partir d'un fichier ?
Il me semble que tu as mal lu l'énoncé et qu'il s'agit plutot charger à partir d'un fichier ?
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
>
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
1 oct. 2008 à 21:36
1 oct. 2008 à 21:36
juste une remarque aux webmasters et gestionnaires du site:
la programmation sans tabulation c'est illisible !!!!!!!! merci les modérateurs de faire remonter.
la programmation sans tabulation c'est illisible !!!!!!!! merci les modérateurs de faire remonter.
Rollin'babe !!
>
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
1 oct. 2008 à 21:47
1 oct. 2008 à 21:47
Re,
1-
Ouaip - t'avais parler de récupérer le tableau à partir d'un fichier je crois dans un vieux POST.
--> notre ami a fait une petite confusion.
Dans tous les cas : c'est vraiment un détail (:<)....
2-
On a pas la même notion de tableaux - je crois que vous vous trompez tous les deux :
A[10][10] représente un tableau bi-dimensionnel comportant en tout 100 entrées.
->le premier [10] ce sont les colonnes.
-> le second [10] ce sont les lignes.
Dans tous les cas : un tableau mono-dimensionnel suffira ici.
Exemples d'initialisation correctes de tableaux :
A[10] = {"1", "2", "3,.....,"10"}
A[2][2] = { {"1", "2"}, {"3", "4"} }
A+.
1-
Ouaip - t'avais parler de récupérer le tableau à partir d'un fichier je crois dans un vieux POST.
--> notre ami a fait une petite confusion.
Dans tous les cas : c'est vraiment un détail (:<)....
2-
On a pas la même notion de tableaux - je crois que vous vous trompez tous les deux :
A[10][10] représente un tableau bi-dimensionnel comportant en tout 100 entrées.
->le premier [10] ce sont les colonnes.
-> le second [10] ce sont les lignes.
Dans tous les cas : un tableau mono-dimensionnel suffira ici.
Exemples d'initialisation correctes de tableaux :
A[10] = {"1", "2", "3,.....,"10"}
A[2][2] = { {"1", "2"}, {"3", "4"} }
A+.
Re,
J'ajoute des commentaires aux infos. de mon collègue :
tu as trois catégories de mots : A,B,C
A[0..N] contient N mots au plus idem B et C
-> Soient trois tableaux de type A[10], B[10] et C[10]
-> une seule dimension est suffisante pour ranger tes mots dans chaque catégorie
(un tableau bi-dimensionnel c'est du type A[10][10] mais ca ne sert à rien ici..).
règle du jeu :
- pour toute une partie (boucle 1)
- je choisi une catégorie,
--> Donc là tu sélectionnes le tableau ad hoc ( A, B ou C).
- on tire un mot au hasard
--> avec un index aléatoire j (type random machin ce que tu veux on s'en fout pour l'instant)
--> tu choisis donc soit A[j], soit B[j] soit C[j] selon le cas.
- tant que pas cinq fautes ou réussit (boucle 2)
- lire une lettre à la position i et la comparer
--> la lettre entrée à la ième position doit être == à la lettre en ième position du mot de A[j], B[j] ou C[j]
- fin boucle 2
- fin boucle 1
J'ajoute des commentaires aux infos. de mon collègue :
tu as trois catégories de mots : A,B,C
A[0..N] contient N mots au plus idem B et C
-> Soient trois tableaux de type A[10], B[10] et C[10]
-> une seule dimension est suffisante pour ranger tes mots dans chaque catégorie
(un tableau bi-dimensionnel c'est du type A[10][10] mais ca ne sert à rien ici..).
règle du jeu :
- pour toute une partie (boucle 1)
- je choisi une catégorie,
--> Donc là tu sélectionnes le tableau ad hoc ( A, B ou C).
- on tire un mot au hasard
--> avec un index aléatoire j (type random machin ce que tu veux on s'en fout pour l'instant)
--> tu choisis donc soit A[j], soit B[j] soit C[j] selon le cas.
- tant que pas cinq fautes ou réussit (boucle 2)
- lire une lettre à la position i et la comparer
--> la lettre entrée à la ième position doit être == à la lettre en ième position du mot de A[j], B[j] ou C[j]
- fin boucle 2
- fin boucle 1
Si c'est charger a partir du fichier, alors il faut seulemt ouvrir et lire ligne par ligne?
et si c'est cela il faut creer les fichier de type txt comme suite:
1. natation
2. soccer
3. ...ainsi de suite?
pour repondre a jhelge, oui j'ai compris et merci;
alors il faut faire sport[10] par exemple?
c'esst ce que j'ai fait dernierement:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
void choix_categorie(int);
void verifier(char, char, char);
void fonction();
void ecriture_du_fichier(int);
//----------------------------MAIN---------------------------------------------
int main()
{
do{
choix_categorie(choix);
ecriture_du_fichier(choix);
verifier(choix, choix)//je ne sais quoi mettre ici???
fonction();
}while(choix!='?');
}//end main
//---------------------------CHOIX CATEGORIE----------------------------------
void choix_categorie( int &choix)
{
cout<<" Veuillez choisir la categorie de votre choix: ";
cout<<endl;
cout<<"1. Sports";
cout<<"2. Musique";
cout<<"3. Pays";
cout<<" Faite le '?' Pour quittez. ";
cout<<endl;
cout<<"Votre choix? ";
cin>>choix;
}//END CHOIX CATEGORI
//---------------------------ECRITURE DU FICHIER-------------------------------
char ecriture_du_fichier(int choix)
{
ofstream fichier("categorie.txt"), ios::out|ios::trunc); //ouverture en ecriture
//et effacement du fichier ouvert
if(fichier)
{
if(choix==1)//sport
{
unsigned char Sport[1][10]={{"ski"}, {"hockey"}, {"football"}, {"soccer"},
{"athlete"}, {"natation"}, {"basketball"}, {"ballon"},
{"cyclisme"}, {"sprint"}};
fichier.write((char*) Sport, sizeof(char));
}
if(choix==2)//musique
{
unsigned char Musique[1][5]={{"traditionnelle"},{"savante"},{"occidentale"},{"classique"},
{"symphonie"}};
fichier.write((char*) Musique, sizeof(char));
}
if(choix==3)//pays
{
unsigned char Pays[1][10]={{"canada"},{"etats-unis"}, {"france"}, {"espagne"},
{"angleterre"}, {"liban"}, {"russie"}, {"allemagne"},
{"brazil"}, {"venezuela"}};
fichier.write((char*) Pays, sizeof(char));
}
}
else cout<<"Impossible d'ouvrier le fichier!"<<endl;
fichier.close()
return 0;
}//end ecriture du fichier
//---------------------------VERIFICATION------------------------------------------
int verifier (char categorie(), char test[], char lettre)
{
int i, verifier=0;
for(i=0; i<strlen(categorie());j++)
{
if(categorie[i]==lettre)
{test[i]==lettre;
verifier=1;
}
}
return verifier;
}//end verifier
//----------------------------------FONCTION---------------------------------------
int fonction()
{
nblettre = 0;
while( Sport[nomchoisi][nblettre]!='\0')
{
nblettre++;
}
while(true)
{
fflush(stdin);
cout<<" Il vous reste "<<nb_essaie<<" chance(s). ";
if (nb_essaie==0)
{cout<<" Vous avez perdu. "<<endl;
break;}
if (nblettre==0)
{cout<<" Vous avez gagne!!! "<<endl;
break;}
// Pour ne pas entrez +ieurs fois la meme lettre
while(true)
{
fflush(stdin);
cout<<" Entrez une lettre: ";
lettre_entrez(lettre);
cout<<" ";
invalide=0;
for (temp3=0;temp3<temp2;temp3++)
{
if(char_deja_entree[temp3]==lettre)
{ cout<<"\n Lettre deja entree. "<<endl;
invalide=1;
break;
}
cout<<endl;
}
if(invalide==0)
{
char_deja_entree[temp2]=lettre;
}
break;
}
}//end fonction
et si c'est cela il faut creer les fichier de type txt comme suite:
1. natation
2. soccer
3. ...ainsi de suite?
pour repondre a jhelge, oui j'ai compris et merci;
alors il faut faire sport[10] par exemple?
c'esst ce que j'ai fait dernierement:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
void choix_categorie(int);
void verifier(char, char, char);
void fonction();
void ecriture_du_fichier(int);
//----------------------------MAIN---------------------------------------------
int main()
{
do{
choix_categorie(choix);
ecriture_du_fichier(choix);
verifier(choix, choix)//je ne sais quoi mettre ici???
fonction();
}while(choix!='?');
}//end main
//---------------------------CHOIX CATEGORIE----------------------------------
void choix_categorie( int &choix)
{
cout<<" Veuillez choisir la categorie de votre choix: ";
cout<<endl;
cout<<"1. Sports";
cout<<"2. Musique";
cout<<"3. Pays";
cout<<" Faite le '?' Pour quittez. ";
cout<<endl;
cout<<"Votre choix? ";
cin>>choix;
}//END CHOIX CATEGORI
//---------------------------ECRITURE DU FICHIER-------------------------------
char ecriture_du_fichier(int choix)
{
ofstream fichier("categorie.txt"), ios::out|ios::trunc); //ouverture en ecriture
//et effacement du fichier ouvert
if(fichier)
{
if(choix==1)//sport
{
unsigned char Sport[1][10]={{"ski"}, {"hockey"}, {"football"}, {"soccer"},
{"athlete"}, {"natation"}, {"basketball"}, {"ballon"},
{"cyclisme"}, {"sprint"}};
fichier.write((char*) Sport, sizeof(char));
}
if(choix==2)//musique
{
unsigned char Musique[1][5]={{"traditionnelle"},{"savante"},{"occidentale"},{"classique"},
{"symphonie"}};
fichier.write((char*) Musique, sizeof(char));
}
if(choix==3)//pays
{
unsigned char Pays[1][10]={{"canada"},{"etats-unis"}, {"france"}, {"espagne"},
{"angleterre"}, {"liban"}, {"russie"}, {"allemagne"},
{"brazil"}, {"venezuela"}};
fichier.write((char*) Pays, sizeof(char));
}
}
else cout<<"Impossible d'ouvrier le fichier!"<<endl;
fichier.close()
return 0;
}//end ecriture du fichier
//---------------------------VERIFICATION------------------------------------------
int verifier (char categorie(), char test[], char lettre)
{
int i, verifier=0;
for(i=0; i<strlen(categorie());j++)
{
if(categorie[i]==lettre)
{test[i]==lettre;
verifier=1;
}
}
return verifier;
}//end verifier
//----------------------------------FONCTION---------------------------------------
int fonction()
{
nblettre = 0;
while( Sport[nomchoisi][nblettre]!='\0')
{
nblettre++;
}
while(true)
{
fflush(stdin);
cout<<" Il vous reste "<<nb_essaie<<" chance(s). ";
if (nb_essaie==0)
{cout<<" Vous avez perdu. "<<endl;
break;}
if (nblettre==0)
{cout<<" Vous avez gagne!!! "<<endl;
break;}
// Pour ne pas entrez +ieurs fois la meme lettre
while(true)
{
fflush(stdin);
cout<<" Entrez une lettre: ";
lettre_entrez(lettre);
cout<<" ";
invalide=0;
for (temp3=0;temp3<temp2;temp3++)
{
if(char_deja_entree[temp3]==lettre)
{ cout<<"\n Lettre deja entree. "<<endl;
invalide=1;
break;
}
cout<<endl;
}
if(invalide==0)
{
char_deja_entree[temp2]=lettre;
}
break;
}
}//end fonction
Re,
Je le remet - on sait jamais :
On a pas la même notion de tableaux - je crois que vous vous trompez tous les deux :
A[10][10] représente un tableau bi-dimensionnel comportant en tout 100 entrées.
->le premier [10] ce sont les colonnes.
-> le second [10] ce sont les lignes et pas la ième position de la lettre du mot.
Dans tous les cas : un tableau mono-dimensionnel suffira ici.
Exemples d'initialisation correctes de tableaux :
A[10] = {"1", "2", "3,.....,"10"}
A[2][2] = { {"1", "2"}, {"3", "4"} }
A+.
Je le remet - on sait jamais :
On a pas la même notion de tableaux - je crois que vous vous trompez tous les deux :
A[10][10] représente un tableau bi-dimensionnel comportant en tout 100 entrées.
->le premier [10] ce sont les colonnes.
-> le second [10] ce sont les lignes et pas la ième position de la lettre du mot.
Dans tous les cas : un tableau mono-dimensionnel suffira ici.
Exemples d'initialisation correctes de tableaux :
A[10] = {"1", "2", "3,.....,"10"}
A[2][2] = { {"1", "2"}, {"3", "4"} }
A+.
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
>
Rollin'babe !!
1 oct. 2008 à 21:59
1 oct. 2008 à 21:59
On est bien d'accord Rollin'Babe
mais ce que tu décris
A[2][2] = { {"1", "2"}, {"3", "4"} }
te donnera sur le plan sémentique
en fait un tableau d'adresses sur "1","2"etc.
car dans la grammaire
"2" se traduit par '2' suivi de '\0'
mais ce que tu décris
A[2][2] = { {"1", "2"}, {"3", "4"} }
te donnera sur le plan sémentique
en fait un tableau d'adresses sur "1","2"etc.
car dans la grammaire
"2" se traduit par '2' suivi de '\0'
jojo
>
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
1 oct. 2008 à 22:11
1 oct. 2008 à 22:11
Hé hé hé,
(t'arrêtes l'enfumage stp..)
On va pas y arriver avec ce genre de théorie.
un tableau bi-dimensionnel c'est une feuille Excel et pis c touuuuutt !!!!
et pis la deuxième dim. du tableau permet ABSOLUMENT pas de calculer le caractère à une positon donnée .... !! (;>).
(t'arrêtes l'enfumage stp..)
On va pas y arriver avec ce genre de théorie.
un tableau bi-dimensionnel c'est une feuille Excel et pis c touuuuutt !!!!
et pis la deuxième dim. du tableau permet ABSOLUMENT pas de calculer le caractère à une positon donnée .... !! (;>).
il ya une chose que je ne comprend pas c'est:
Le programme demande la catégorie désirée. On détermine aléatoirement l’indice du tableau à l'aide de la fonction rand(). Le programme affiche un nombre de traits correspondant aux nombres de lettres du mot.
comment utiliser la fonction rand() ici?
Le programme demande la catégorie désirée. On détermine aléatoirement l’indice du tableau à l'aide de la fonction rand(). Le programme affiche un nombre de traits correspondant aux nombres de lettres du mot.
comment utiliser la fonction rand() ici?
Bon,
Peux tu repositionner tout ca stp ...
aloush peut t'il faire une synthèse et re-proposer un code ?
________________________________________________________________________________________________
"Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire comme ca un chtit tour
au "Troquet des blaireaux"... c'est sale et le service est déplorable - ca fait pitié
- chuis r'monté vite fait :> (Jésus Christ)"
Peux tu repositionner tout ca stp ...
aloush peut t'il faire une synthèse et re-proposer un code ?
________________________________________________________________________________________________
"Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire comme ca un chtit tour
au "Troquet des blaireaux"... c'est sale et le service est déplorable - ca fait pitié
- chuis r'monté vite fait :> (Jésus Christ)"
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 22:34
1 oct. 2008 à 22:34
Ok j'attends un instant mais pour moi il est déjà 00:32.
encore une heure max et le reste demain
encore une heure max et le reste demain
Ok,
On attend la réponse de aloush pour qu'il nous propose un code correct - qu'il prenne son temps.
Amicalement.
_______________________________________________________________________________________________
"Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire comme ca un chtit tour au "Parc Satanix"
... c'est un gars qui gère ca et il glande rien de la journée - ca fait pitié - chuis r'monté vite fait !! :> (Jésus Christ)"
On attend la réponse de aloush pour qu'il nous propose un code correct - qu'il prenne son temps.
Amicalement.
_______________________________________________________________________________________________
"Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire comme ca un chtit tour au "Parc Satanix"
... c'est un gars qui gère ca et il glande rien de la journée - ca fait pitié - chuis r'monté vite fait !! :> (Jésus Christ)"
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 23:00
1 oct. 2008 à 23:00
Tu es sage très cher !
et je suis d'accord avec toi attendons.
et je suis d'accord avec toi attendons.
Re,
Let's wait my dear.
See you tomorrow.
________________________________________________________________________________________
"Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire comme ca
un chtit tour au "Parc Satanix"... c'est un gars qui gère ça, il s'fait du blé et
il glande rien de la journée - ca fait pitié - chuis r'monté vite fait ben fait!! :> (Jésus Christ)"
Let's wait my dear.
See you tomorrow.
________________________________________________________________________________________
"Ouais mec - après ma mort avant de r'joindre l'Ancien chuis allé faire comme ca
un chtit tour au "Parc Satanix"... c'est un gars qui gère ça, il s'fait du blé et
il glande rien de la journée - ca fait pitié - chuis r'monté vite fait ben fait!! :> (Jésus Christ)"
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 12:48
1 oct. 2008 à 12:48
Je suis d'accord avec rollin'babe c'est fatiguant messieurs de retaper le texte ---- !
Maintenant j'écris sous word avant de répondre
Un peu d'algorithmique !
d'abord je voulais apporter une petite pierre qui est le chargement dynamique à partir d'un fichier
int nbsport;
int nbmusic;
unsigned char sport[100][10]={};
unsigned char music[100][10]={};
../...
prototype et algo
void remplir( char *table , charf *fichier int *nbmot);
tantque non fin de fichier et pas max de mots possible
lire une ligne, mettre la marque de fin de chaine à la place du "\n";
mettre dans le tableau
incrémenter le compteur de mot (*nbmot)++
…/…
appels
remplir (sport , "sport.txt", nbsport);
remplir(music , "music.txt", nbmusic);
etc.
Autre chose : la notion de fonction est faite pour éviter de réécrire le code plusieurs fois
(C++ est l'héritier du C évitez de vous en servir comme du BASIC)
écrivez une fonction qui choisi un mot dans la table désirée
unsigned char mot_choisi[10];
../…
prototype
void choisir_mot( char *table, char *mot, int *nbmot);
cette fonction appelle la fonction de tirage aléatoire entre 0 et le nombre max de mot dans une table.
appel
choisir_mot( sport , mot_choisi , nbsport);
…/…
prototype
int tirage( int nbmot);
n'oubliez pas que rand retourne un ENTIER entre 0 et RAND_MAX donc si vous faites
float toto;
toto = rand()/RAND_MAX
toto est entre 0 et 1 reste plus qu'à faire le petit réajustement en multipliant par le nombre max et en prenant la partie entière ou un arrondi (je vous conseille l'arrondi à 2 décimales).
N'oubliez pas au démarrage de l'application de faire un srand pour initialiser le seed de la suite numérique (mais une seule fois).
je n'ai pas compris votre rand()+time(NULL)%20 mais je ne pense pas que ça vous retourne ce que vous attendez.
écrivez une fonction qui lit une lettre au clavier
une qui compare à la chaine contenu dans le mot
mettez le tout dans un bloc qui tourne pour la durée de la partie,
vous avez écrit 3 fois le même code ne pensez vous pas qu'une forme algorithmique du genre serait préférable :
remplir la table de sport
remplir la table de musique
remplir la table de géographie,
initialiser les scores et variables diverses
while(partie_on)
{
? quel catégorie souhaitez vous (1:sport, 2:music, 3:géographie)
entrez un choix
selon choix
cas de sport
choisir un mot dans la table sport
cas de musique
choisir un mot dans la table musique
cas de géographie
choisir un mot dans la table géographie
tantque pas trouvé et pas perdu
lire une lettre
scanner le mot_choisi
évaluer si gagné ou pas
}
fin de partie
faire les statistiques
voilà à bientôt
Maintenant j'écris sous word avant de répondre
Un peu d'algorithmique !
d'abord je voulais apporter une petite pierre qui est le chargement dynamique à partir d'un fichier
int nbsport;
int nbmusic;
unsigned char sport[100][10]={};
unsigned char music[100][10]={};
../...
prototype et algo
void remplir( char *table , charf *fichier int *nbmot);
tantque non fin de fichier et pas max de mots possible
lire une ligne, mettre la marque de fin de chaine à la place du "\n";
mettre dans le tableau
incrémenter le compteur de mot (*nbmot)++
…/…
appels
remplir (sport , "sport.txt", nbsport);
remplir(music , "music.txt", nbmusic);
etc.
Autre chose : la notion de fonction est faite pour éviter de réécrire le code plusieurs fois
(C++ est l'héritier du C évitez de vous en servir comme du BASIC)
écrivez une fonction qui choisi un mot dans la table désirée
unsigned char mot_choisi[10];
../…
prototype
void choisir_mot( char *table, char *mot, int *nbmot);
cette fonction appelle la fonction de tirage aléatoire entre 0 et le nombre max de mot dans une table.
appel
choisir_mot( sport , mot_choisi , nbsport);
…/…
prototype
int tirage( int nbmot);
n'oubliez pas que rand retourne un ENTIER entre 0 et RAND_MAX donc si vous faites
float toto;
toto = rand()/RAND_MAX
toto est entre 0 et 1 reste plus qu'à faire le petit réajustement en multipliant par le nombre max et en prenant la partie entière ou un arrondi (je vous conseille l'arrondi à 2 décimales).
N'oubliez pas au démarrage de l'application de faire un srand pour initialiser le seed de la suite numérique (mais une seule fois).
je n'ai pas compris votre rand()+time(NULL)%20 mais je ne pense pas que ça vous retourne ce que vous attendez.
écrivez une fonction qui lit une lettre au clavier
une qui compare à la chaine contenu dans le mot
mettez le tout dans un bloc qui tourne pour la durée de la partie,
vous avez écrit 3 fois le même code ne pensez vous pas qu'une forme algorithmique du genre serait préférable :
remplir la table de sport
remplir la table de musique
remplir la table de géographie,
initialiser les scores et variables diverses
while(partie_on)
{
? quel catégorie souhaitez vous (1:sport, 2:music, 3:géographie)
entrez un choix
selon choix
cas de sport
choisir un mot dans la table sport
cas de musique
choisir un mot dans la table musique
cas de géographie
choisir un mot dans la table géographie
tantque pas trouvé et pas perdu
lire une lettre
scanner le mot_choisi
évaluer si gagné ou pas
}
fin de partie
faire les statistiques
voilà à bientôt
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 14:13
1 oct. 2008 à 14:13
le C++ n'a rien changé à la structure du langage qui est toujours du C.
Avant C++ on en faisait en mettant des pointeurs de fonctions dans des struc pour les méthode et des items pour les attributs.
La nouveauté du C++ c'est l'héritage et un stdio un peu différent mais l'ancien est toujours accessible.
Rien n'empêche de compiler un de mes bon vieux code des années 78-80 avec un compilo C++
:-))
tout en dessous il y a toujours des bits et fonctions logiques !!!!!!!!!
Avant C++ on en faisait en mettant des pointeurs de fonctions dans des struc pour les méthode et des items pour les attributs.
La nouveauté du C++ c'est l'héritage et un stdio un peu différent mais l'ancien est toujours accessible.
Rien n'empêche de compiler un de mes bon vieux code des années 78-80 avec un compilo C++
:-))
tout en dessous il y a toujours des bits et fonctions logiques !!!!!!!!!
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
>
Rollin'babe !!
1 oct. 2008 à 15:00
1 oct. 2008 à 15:00
Voire plus si on sait y faire ;o)
Ah C++ quand tu nous tiens !
Ah C++ quand tu nous tiens !
Rollin'babe !!
>
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
1 oct. 2008 à 15:56
1 oct. 2008 à 15:56
Et oui!!
Puis y a un truc qu'on traite vachement peu : c'est la relation entre C++ et la "durée de vie des gastéropodes" !!.
Regarde ca ben diou !! :
"La durée de vie des escargots varie selon les espèces. Dans la nature, les Achatinidae vivent de cinq à sept ans alors que les Helix dépassent rarement l'âge de trois ans. Leur mort est souvent due à des prédateurs ou à des parasites.
En captivité, leur longévité est bien plus longue et va de dix à quinze ans pour la plupart des espèces. Certains escargots ont vécu plus de trente ans."
C'est fou non ?.
(:>).
_______________________________________________________________________________________________
"Ma mère s'appelait Gwendoline... elle est morte de chagrin parc'que mon père est allé boire
à la taverne des Duchenot et qui l'est mort crevé !! dans l'étang gelé à cause de son pied bo!!..".
Puis y a un truc qu'on traite vachement peu : c'est la relation entre C++ et la "durée de vie des gastéropodes" !!.
Regarde ca ben diou !! :
"La durée de vie des escargots varie selon les espèces. Dans la nature, les Achatinidae vivent de cinq à sept ans alors que les Helix dépassent rarement l'âge de trois ans. Leur mort est souvent due à des prédateurs ou à des parasites.
En captivité, leur longévité est bien plus longue et va de dix à quinze ans pour la plupart des espèces. Certains escargots ont vécu plus de trente ans."
C'est fou non ?.
(:>).
_______________________________________________________________________________________________
"Ma mère s'appelait Gwendoline... elle est morte de chagrin parc'que mon père est allé boire
à la taverne des Duchenot et qui l'est mort crevé !! dans l'étang gelé à cause de son pied bo!!..".
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
>
Rollin'babe !!
1 oct. 2008 à 19:59
1 oct. 2008 à 19:59
yeaaah!
Et si C++ c'était dieu réincarné dans la machine.
Son ame, son inscription !!
la manifestation virtuelle de la force dans les circuits du web.
Action Script, php, java, javascript et tant d'autres sont apparentés !!!!
Dieu eST LAAAAAAAA!
TCPIP est à l'origine un fils de Unix lui même écris en C.......!
Tremblez mes frères, je brandits devant vous la lumière.
C est TOUT
TOUT est C.
<!----// je crois qu'on fume les mêmes choses !!!! :o)) ---->
Et si C++ c'était dieu réincarné dans la machine.
Son ame, son inscription !!
la manifestation virtuelle de la force dans les circuits du web.
Action Script, php, java, javascript et tant d'autres sont apparentés !!!!
Dieu eST LAAAAAAAA!
TCPIP est à l'origine un fils de Unix lui même écris en C.......!
Tremblez mes frères, je brandits devant vous la lumière.
C est TOUT
TOUT est C.
<!----// je crois qu'on fume les mêmes choses !!!! :o)) ---->
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 20:54
1 oct. 2008 à 20:54
Bon !
Je comprends mieux !!
Salut La Belle Province; tu te lève, je me couche.
Tu as bien fais un effort de séparation fonctionnel, ais où fais tu appel à tes fonctions ?
J'ai un peu de temps demain, je vais veiller un pour toi.
De toute façon je bosse sur un autre truc en même temps.
Aller dis nous tout on t'écoute car ton code est pas clair du tout.
Je comprends mieux !!
Salut La Belle Province; tu te lève, je me couche.
Tu as bien fais un effort de séparation fonctionnel, ais où fais tu appel à tes fonctions ?
J'ai un peu de temps demain, je vais veiller un pour toi.
De toute façon je bosse sur un autre truc en même temps.
Aller dis nous tout on t'écoute car ton code est pas clair du tout.
jihelge
Messages postés
71
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
4 octobre 2008
7
1 oct. 2008 à 21:51
1 oct. 2008 à 21:51
Moi j'ai un petit problème d'ADSL car notre cable "SAFE" est un peu saturé en Océan Indien et j'ai quelques fois du retard.
Veuillez m'en excuser.
1 lire les fichers
je t'en parle dans le post N° 3
Un fichier texte contenant un mot par ligne
est lu et copié dans les tableaux (si cela est ton désir)
Moi j'aurais bien aimé
une classe ou une structure
contenant deux items:
un string (char mot[10])
un bolean (utilisé)
tant qu'on y est, tu es où Rollin'babe?
Veuillez m'en excuser.
1 lire les fichers
je t'en parle dans le post N° 3
Un fichier texte contenant un mot par ligne
est lu et copié dans les tableaux (si cela est ton désir)
Moi j'aurais bien aimé
une classe ou une structure
contenant deux items:
un string (char mot[10])
un bolean (utilisé)
tant qu'on y est, tu es où Rollin'babe?