TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : 1 2 3 4 5 | |
| Pseudo | Commentaire |
|---|---|
| Page : 1 2 3 4 5 | |
Havok
|
# Posté le 21/12/2005 19:40:13 |
![]() Groupe : Membres |
Superbe ce tp je l'attendait avec impatience.
PS : aha je l'ai découvert avant la news
|
Chriss
|
# Posté le 21/12/2005 20:07:15 |
![]() Groupe : Membres |
Arf j'avais fait un programme inverse, c'est l'ordi qui demande le nombre qu'on avais en tete et fallais lui dire plus ou moins.
|
kimimarokun
|
# Posté le 21/12/2005 20:53:18 |
|
Omniscience partielle... Groupe : Membres |
Très bon tutorial, malgré ça ton script plante .
Quand on met un nombre à virgule, la script plante .
Un screen :
Avant, j'avais des idées pour mes signatures... >> |
rz0
|
# Posté le 21/12/2005 21:05:00 |
meuh![]() Groupe : Membres |
Ce sont les joies du scanf, ça. :]
|
Havok
|
# Posté le 21/12/2005 21:06:51 |
![]() Groupe : Membres |
Logique en même temps puisque la variable est un long et pas un double. |
louisclem
|
# Posté le 21/12/2005 21:13:50 |
J'aime le![]() Groupe : Membres |
Pas mal ce TP, je me suis amusé un peu. Je pense qu'il est bien adapté au niveau des zérOs. J'ai juste eu peur à un moment, premier test du programme, je tappe 12 et il me dit j'ai gagné, j'ai crût à un bug, mais non
Et sinon il serait quand même mieux d'inclure dans la boucle le cas où le nombre rentré est invalide (moi j'ai fait avec un fgets) sinon il bug ou alors dit un réponse fausse. Bonne continuation
|
pixinet
|
# Posté le 21/12/2005 21:24:13 |
C'est bientôt 2006![]() Groupe : Membres |
Très bon TP, à un poil près : En tapant un caractère autre qu'un chiffre, un "+" ou un "-" (tel qu'une lettre, un point, ou encore un slash), le programme plante et continue en boucle, sans aucune action extérieure.
|
Ornéon
|
# Posté le 21/12/2005 21:25:49 |
Repas préféré de Toufou![]() Groupe : Membres |
Et merde, je voulais faire le bon élève en implémentant tout seul comme un grand un compteur de coups quand j'ai découvert que l'idée était inscrite à la fin du TP.
Rhaaaaa. Anciennement akira2051 puis Shamanosuke (oui j'aime bien changer de pseudo). |
porsnak
|
# Posté le 21/12/2005 21:43:19 |
![]() Groupe : Membres |
TP divertissant et adapté au niveau de connaissances qui ont été acquises jusqu'à présent.
Rien à ajouter
|
ErGo_404
|
# Posté le 21/12/2005 22:08:52 |
C'est la mer noire !![]() Groupe : Membres |
Mouais
Torché en moins de 5 min (je vous jure et pourtant chui pas une bete ).
Et encore j'ai implémenté moi meme les "idées pour améliorer" en pensant que c'était tout naturel de le faire
J'ai fait un truc différent, c'est l'utilisateur qui choisit le nombre maximal
Amusez vous bien
Je met 18 parsque c'est comme toujours super bien expliqué
|
Lpu8er
|
# Posté le 21/12/2005 22:23:54 |
[R34n1m4T3d]![]() Groupe : Membres |
CA Y EST !
*extase* Premier programme C++ réussi ! TP réussi du premier coup ! WHAAAAAAAH ! Merci m@teo ! Hum ? Comment ça j'en fait trop ??
Et alors ?
Toujours excellent ces cours M@teo, t'es une référence en le domaine d'apprentissage du tout au tout sur le net continue
Le or die(mysql_error()), nom d'un chien !!! (et apprenez à concaténer avant de le faire) |
PaNTi
|
# Posté le 21/12/2005 22:48:38 |
Forza Italia![]() Groupe : Membres |
Hello
Voila je voulais quand même signaler un petit erreur de logique lol
voici ton code: Code : C #include <stdio.h>
#include <stdlib.h> #include <time.h> int main ( int argc, char** argv ) { long nombreMystere = 0, nombreEntre = 0; const long MAX = 100, MIN = 1; // Génération du nombre aléatoire srand(time(NULL)); nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */ do { // On demande le nombre printf("Quel est le nombre ? "); scanf("%ld", &nombreEntre); // On compare le nombre entré avec le nombre mystère if (nombreMystere > nombreEntre) printf("C'est plus !\n\n"); else if (nombreMystere < nombreEntre) printf("C'est moins !\n\n"); else printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n"); } while (nombreEntre != nombreMystere); system("PAUSE"); } Alors voila pourquoi avoir mit une boucle do...while ? une simple while aurait suffit puisque tu a déclaré ta variable au début du programme et elle vaut zéro, et puisque dans le nombre aléatoire créé, zéro ne fait pas partie de l'intervalle [1-100] la boucle while aurait quand même été exécuté une fois. Code : C #include <stdio.h>
#include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { //Définition des variable const long MIN=1 , MAX=100; long nombreMystere = 0, nombreEntre = 0; //Tire un nombre au hasard entre 1 et 100 srand(time(NULL)); nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; //Vérification de la du nombre entree while(nombreEntre != nombreMystere){ printf("Quel est le nombre ? "); scanf("%ld", &nombreEntre); if(nombreEntre == nombreMystere){ printf("\nBravo, vous avez trouve le nombre mystere !!!\n\n"); } else if(nombreEntre < nombreMystere){ printf("\nC'est plus !\n\n"); } else if(nombreEntre > nombreMystere){ printf("\nC'est moins ! \n\n"); } } system("PAUSE"); return 0; } |
M@teo21
|
# Posté le 21/12/2005 23:01:15 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Oui c'est une autre façon de faire.
C'est une question de logique, ça me paraissait mieux (sémantiquement parlant) de faire un do... while mais pas la peine de tergiverser là-dessus trop longtemps
<tuto etat="redaction" mode="venere" target="c++" /> Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
Snakeshit
|
# Posté le 21/12/2005 23:13:19 |
|
La bêtise humaine est infinie! Groupe : Membres |
Au début j'avais séparé la condtion et la boucle ! Sinon pour le compteur de coup, j'aie u l'idée plusieurs fois, mais à chasue fois j'oubliais, parce que je jouaisà GTA et parlais sur Skype au même moment!
Snino, pour les booléens, comment on refait pour refaire commencer la fonction? On la déclare fausse, si on veut recommencer, où il existe une balise qui permet de revenir au début? Je suis un glandeur et un rêveur pro^^! |
rz0
|
# Posté le 22/12/2005 00:08:12 |
meuh![]() Groupe : Membres |
Pour alimenter votre débat de la boucle à utiliser... moi je dis, j'utiliserais une boucle for.
Code : C #include <stdio.h>
#include <stdlib.h> #include <time.h> #define XMIN 1 #define XMAX 100 #define L_GUESS 5 int getx(void) { static char buf[L_GUESS]; fgets(buf, L_GUESS, stdin); return (int) strtol(buf, NULL, 10); } int main(void) { int x, guess; srand((unsigned int) time(NULL)); x = XMIN + rand() % (XMAX - XMIN + 1); for (guess = getx(); guess != x; guess = getx()) printf(guess < x ? "Higher!\n" : "Lower!\n"); printf("That's it!\n"); return 0; }
|
Jérémie Belpois
|
# Posté le 22/12/2005 00:31:40 |
On t'auras XANA![]() Groupe : Membres |
Moi je donne un 20/20.
Bravo M@teo, tu nous fais des cours toujours aussi bien, et je suis sur que je suis pas le seul à t'en remercier. Pour tes idées d'améliorations, j'ai eu les mêmes juste avant de les lires, mais pour moi, c'est ajouts se feront en 5 minutes maximum. (Il y a plusieurs années, j'avais touché un peu au C/C++ mais je suis jamais allé tres loin vu le manque de bouquin éfficace). |
Linktim_old
|
# Posté le 22/12/2005 08:26:43 |
|
Groupe : Membres |
Super TP,
sauf qu'il comporte un petit probleme avec les lettres ! J'ai entré "j" et il m'a fait une boucle infini ! Il faudrait pouvoir rajouter un "if variable est difference de 1,2,3,4,5,6,7,8,9 alors ... " mais bon c'est peut etre pas encore notre niveau ! |
SAurOn
|
# Posté le 22/12/2005 08:45:20 |
Spreek je Nederlands ?![]() Groupe : Membres |
Super, j'y suis arrivé, et j'ai tout rajouté (sauf le recommencer EDIT : maintenant, je l'ai fait !). Mais j'ai une idée d'amélioration qui ferait intervenir un chapitre en plus, celui des maths.
Se serait de faire un système de point, je m'explique : Le but serait d'avoir le moins de points possibles. Les points seraient le nombre de coups divisé par le niveau ! Bon, ça ne fait pas beaucoup avec les maths, mais c'est une idée qui m'a traversé ! EDIT : Voilà ce que ça donne avec les points (et un mode d'emploi avec ) :
Code : C #include <stdio.h>
#include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { long choixRecommencer = 1; while (choixRecommencer == 1) { long nombreEntre = 101; long nombreMystere = 0; long nombreCoups = 1; long nbrJoueurs = 1; printf("=====Menu=====\n\nA quel mode voulez-vous jouer ?\n\n1. 1 joueur\n2. 2 joueurs\n3. mode d'emploi\n"); scanf("%ld", &nbrJoueurs); if (nbrJoueurs == 1) { const long MIN = 1; long MAX = 100; long niveau = 1; printf("=====Menu 1 joueur=====\n\nA quel niveau voulez-vous jouez ?\n\n1. niveau 1 (max : 100)\n2. niveau 2 (max : 500)\n3. niveau 3 (max : 1000)\n"); scanf ("%ld", &niveau); switch (niveau) { case 1: MAX = 100; break; case 2: MAX = 500; break; case 3: MAX = 1000; break; default: printf("ce niveau n'existe pas, nous vous mettons au niveau 1"); break; } printf("\n"); srand(time(NULL)); nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; while (nombreEntre != nombreMystere) { nombreCoups++; printf("Quel est le nombre ? "); scanf("%ld", &nombreEntre); printf("\n"); if (nombreEntre < nombreMystere) { printf("C'est plus !\n\n"); } else if (nombreEntre > nombreMystere) { printf("C'est moins !\n\n"); } else { printf("Bravo, vous avez trouve le nombre mystere en %d coups \n", nombreCoups); } } long score = nombreCoups / niveau; printf("Voici votre score : %d \n", score); printf("\nVoulez-vous rejouer une partie ?\n\n1. Oui\n2. Non\n"); } else if (nbrJoueurs ==2) { printf("joueur 1, intruduisez un nombre entre 1 et le maximum convenu avec joueur 2. "); scanf("%ld", &nombreMystere); printf("\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*\n\n*Joueur 2, a vous de jouer !"); while (nombreEntre != nombreMystere) { nombreCoups++; printf("Quel est le nombre ? "); scanf("%ld", &nombreEntre); printf("\n"); if (nombreEntre < nombreMystere) { printf("C'est plus !\n\n"); } else if (nombreEntre > nombreMystere) { printf("C'est moins !\n\n"); } else { printf("Bravo, vous avez trouve le nombre mystere en %d coups \n", nombreCoups); } } printf("\nVoulez-vous rejouer une partie ?\n\n1. Oui\n2. Non\n"); } else if (nbrJoueurs == 3) { printf("=====Mode d'emploi=====\n\n1 joueur :\nDans ce jeu, l'ordinateur choisit un nombre au hazard en fonction du niveau choisi. Vous devez ensuite taper un nombre. L'ordinateur vous dira si le nombre mystere est plus grand ou plus petit que le votre. Si il est egal, vous avez gagne ! Apres plusieurs parties, le but est d'avoir totalise le moins de points.\n\n2 joueurs :\nLes 2 joueurs definissent un palier maximum, le premier tape un nombre entre 1 et le palier maximum. Le deuxieme doit ensuite faire comme pour 1 joueur. Apres chaque partie, echangez les roles. Au bout de plusieurs parties, le vainqueur est celui qui a totalise le moins de point.\n"); system("pause"); printf("\n\nVoulez-vous commencer une partie ?\n\n1. Oui\n2. Non\n"); } else { printf("Desole, ce choix n'est pas dans le menu\n\nVoulez-vous retourner au menu ?\n\n1. Oui\n2. Non\n"); } scanf("%ld", &choixRecommencer); } printf("Au revoir, et a bientot !\n (c) Pierre Vyncke\n"); { ^^ } system("PAUSE"); return 0; } On peut aussi faire une intelligence artificielle : Code : C long contreOrdinateurMaximum = 0;
long nombreOrdinateur = 0; long nombreCoupsOrdinateur = 0; printf("Tapez le nombre maximum "); scanf("%ld", &contreOrdinateurMaximum); printf("Choisissez un nombre dans votre tete...\n"); system("PAUSE"); long ordinateurTrouve = 0; long contreOrdinateurMinimum = 0; while(ordinateurTrouve != 1) { nombreCoupsOrdinateur++; nombreOrdinateur = (contreOrdinateurMinimum + contreOrdinateurMaximum) / 2; printf("Est-ce le nombre %d ?\n\n1. Oui\n2. Non, il est plus petit\n3. Non, il est plus grand\n", nombreOrdinateur); scanf("%ld", &ordinateurTrouve); switch (ordinateurTrouve) { case 1: break; case 2: contreOrdinateurMaximum = nombreOrdinateur; break; case 3: contreOrdinateurMinimum = nombreOrdinateur; break; default: printf("Vous avez saisit un mauvais nombre, l'ordinateur va reesayer."); break; } } printf("l'ordinateur a trouve votre nombre en %d coups\n", nombreCoupsOrdinateur); |
Skydreamer
|
# Posté le 22/12/2005 11:28:41 |
|
Groupe : Membres |
Excellent...
Mes copains étaient épatés . En plus je l'avais amélioré avec toutes les idées proposées sauf le mode 2 joueurs (ils sont qu'a un sur l'ordi lol) ...
Merci on en apprend de jour en jour... Sinon le moteur de mateo fonctionjnne au super ou au diesel lol .
|
kaamo
|
# Posté le 22/12/2005 13:05:53 |
|
HO la pause !!!!! Groupe : Membres |
Bonjour, je viens de découvrir votre site super!! Je suis en IUT informatique, et touche pas mal au C en ce moment ! J'aimerai vous proposer une solution en c++ de ce TP avec pôssibilité de jouer plusieurs fois et de comptabiliser le nombre de victoire.
Voici le code :
Code : C++ #include <iostream>
using namespace std; inline void randomize(){ srand((time_t) time(NULL)); //initialisation du générateur de nbres aleatoires } inline int random(int n){ return rand()%n; } //générateur de nbres aléatoires int main(){ int nbre_a,nbre_s,i,nb_pj=0,nb_pg=0,compteur; string reponse,pseudo,resultat,fini,ap; cout<<endl; cout<<" !!! Le Jeu du + ou du - !!!"<<endl<<endl; cout<<"Est-ce la première fois que vous jouez à ce jeu ?"<<endl; cout<<"oui ou non ?"; cin>>reponse; if (reponse=="oui") { cout<<"Saisi ton prénom s'il te plait : "; cin>>pseudo; cout<<endl; cout<<"Bienvenue "<<pseudo<<", tu vas joueur au célèbre jeu du + ou - !!!\nLes règles sont simples : l'ordinateur choisit un nombre aléatoire entre 0 et \n1000 et c'est a toi de proposer un nombre. Ensuite l'ordinateur te dit + si le \nnombre aléatoire choisit est plus grand que le nombre que tu as saisi et - si \nle nombre que tu as saisi est plus petit que le nombre choisit par l'ordinateur.\n\nTu as droit à 10 chances pour trouver le nombre mystère !!"<<endl; cout<<"C'est parti !!"<<endl<<endl; } else { cout<<"Saisi ton prénom s'il te plait : "; cin>>pseudo; } while (fini != "non") { resultat=""; randomize(); nbre_a=random(1000); i=0; compteur=1; while((i != 10) && (resultat != "!!Gagné!!")) { cout<<compteur<<"ème chance : "; cout<<"Quel est ton nombre ? "; cin>>nbre_s; if (nbre_a<nbre_s) { resultat="-"; cout<<" "<<resultat<<endl; } else if (nbre_a>nbre_s) { resultat="+"; cout<<" "<<resultat<<endl; } else { resultat="!!Gagné!!"; cout<<"\nBravo "<<pseudo<<" tu as gagné !!"<<endl<<endl; nb_pg++; } i++; compteur++; }//fin 2eme while if (i == 10&&resultat!="!!Gagné!!") { cout<<"Désolé, "<<pseudo<<" mais tu as perdu ! "; cout<<"Le nombre mystère était : "<<nbre_a<<endl<<endl; } nb_pj++; cout<<"Veux tu rejouer, "<<pseudo<<"?"<<endl; cout<<"oui ou non ? "; cin>>fini; cout<<endl; }//fin 1er while cout<<"Résultats finaux :"<<endl<<"Tu as joué "<<nb_pj<<" parties."<<endl; cout<<"Tu en as gagné "<<nb_pg<<"."<<endl<<endl; return 0; }//fin programme principal |
Jééééjéééé
|
# Posté le 22/12/2005 13:40:13 |
Salut! c'est jéjé!![]() Groupe : Membres |
super tuto com d'hab,en plus j'aie reussi a mettre un menu!
aussi pour rappeler qu'un tuto de zero avait fit ton TP avant je sais pas si tu l'as vu mateo j'ai mi 19 super TP!
It's me |
pixinet
|
# Posté le 22/12/2005 13:41:44 |
C'est bientôt 2006![]() Groupe : Membres |
Je voulais savoir, comment on voit la moyenne des notes attribuées à un tuto officiel ?
|
dynoplasmma
|
# Posté le 22/12/2005 15:09:19 |
![]() Groupe : Membres |
Bon TP, jai realisez ce petit jeu moi aussi, mais avant ce tuto :
http://membres.lycos.fr/dynozone/ Jutilise le C++, donc le code ,est pas le meme. Je crois que jai pas laissé le code en telechargement. |
Parad0x
|
# Posté le 22/12/2005 17:30:46 |
Euh ... rien![]() Groupe : Membres |
C'etait trop facile, reussi du premier coup.
Pour la boucle, j'ai fait sans do, juste avec while
Code : C while (nombre != nombreMystere)
{ printf("Quel est le nombre ? "); scanf("%ld", &nombre); if (nombre > nombreMystere) { printf("C'est moins\n\n"); } else if (nombre < nombreMystere) { printf("C'est plus\n\n"); } } Vivement le prochain tuto (j'espere qu'on va bientôt commencé a programmé en mode fenetre plutôt qu'en mode console.) ![]() ![]() ![]() |
Arthur
|
# Posté le 22/12/2005 17:35:13 |
![]() Groupe : Membres |
Je met 18, c'est très bien, et je suis agréablement surpris que je réussisse a faire le tp, en ayant mi presque pareil que mateo a une ou deux diférence pres;
J'avai mi 2 char et sinon, chose que je n'avai pas remarqué avant mais qui n'avait pas été écrit en gros et en rouge et que j'ai cherché pendant super longtemp:
Citation : Pas de titre if ( essai > nombreMystere )
ne marche pas !!! Ba oui moi je voulait bien éclairé mon code et j'ai mi 2 plombes avant de découvrire qu'il fallait mettre Citation : Pas de titre if (essai > nombreMystere)
Il faudrait écrire en gros et en rouge de faire attention avec les espaces et pas se faire avoir comme moi stp pour les prochains qui mettront juste un tit espace avant la variable qui leur fera tout foiré
Edit mateo : ça n'a rien à voir. Les espaces ne font pas bugger un code source, je te l'assure. ps: j'avou que rien ne veut un petitCode : C pour saoir si on est dans le droit chemin
|
Thicot
|
# Posté le 22/12/2005 17:45:36 |
![]() Groupe : Membres |
Très bonne partie une fois de plus.
Je vais me permettre d'ajouter un petit truc pour ceux qui rentre des lettres et qui se retrouvent avec des boucles infinies... Après tous vos scanf, ajouter ceci : scanf("%*[^\n]"); scanf("%*1[\n]"); Ces deux scanf permettent de prendre en compte que le type que vous voulez vraiment. Si vous vous attendez à avoir un entier et que l'utilisateur entre un caractère, votre programme ne buggera pas car ces scanf "supprimeront" ce qui n'est pas correct. Le top du top seait d'ajouter une boucle do...while pour s'assurer que la personne ne rentre pas un nombre trop grand ou trop petit. cela donnerait quelque chose comme : do { printf("Quel est le nombre ? "); scanf("%ld", &nombreEntre); scanf("%*[^\n]"); scanf("%*1[\n]"); }while(nombreEntre < MIN || nombreEntre > nbMax); |
Red
|
# Posté le 22/12/2005 21:05:45 |
![]() Groupe : Membres |
Super facile, need un chapitre compliqué là !
Ich will ein "Site du Zéro" auf Deutsch übersetzt ! |
M@teo21
|
# Posté le 22/12/2005 22:27:29 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Lol, je vous ai dit de pas vous plaindre, parce que des trucs compliqués vous allez tellement en avoir dans la partie II que vous regretterez la partie I
<tuto etat="redaction" mode="venere" target="c++" /> Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
holocron
|
# Posté le 23/12/2005 18:11:11 |
|
Groupe : Membres |
Héhé trop facile
On peut aussi faire un mode ou on doit trouver le nombre en x tentatives
Vivement la partie II (oupah ?!) Heu misère xD
J'ai ajouter le nombre de tentative à chaque coups ... quand je test dans dev++ ça marche mais quand je test le .exe il me met un nombre tout bizarre negatif ...
C'est normal docteur ? |
Zulon
|
# Posté le 24/12/2005 15:09:49 |
The shrieker shrieks.![]() Groupe : Membres |
20/20, super tuto, comme d'habitude. Mes copains m'ont pas cru quand je leur ai dit que j'avais réussi, mais par contre je n'arrive pas DU TOUT à faire le mode 2 joueurs...
Edit: j'ai réussi!!!!!!!!!!!!! merci au forum! |
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
Fil RSS |
XHTML 1.0 |
CSS 2.0
Édité par Simple IT SARL :
Nous contacter
| Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
322 Zéros connectés |
6 requêtes |
0.0365s (0.0258s)
