Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vos jeux en C

defis

Anonyme
15 janvier 2006 à 17:27:52

Umf, comem sa, tu peut me rapeller les algos de calcule du pgcd et ppc en pseudo code?
  • Partager sur Facebook
  • Partager sur Twitter
23 janvier 2006 à 18:05:44

Il est trop bien ce topic, l'idée de mettre plusieurs défi dans le même topic c'est bien, ça permet effectivement de passer à la pratique ... Perso j'ai aps de défi j'en suis désolé, mais fodrait chercher un peu, ça doit se trouver ;)
J'enverrais les codes pour les défis que j'ai fait plus tard faut que je les paufine un peu ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
23 janvier 2006 à 20:13:40

Bientot j'aurais quelques défis, apprès la sortie du prochain cours :diable:
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 janvier 2006 à 11:02:37

Bon ben alors, des petits défits, voyons voire ce que j'ai la...
Alors, sa vous dit de réaliser un foncteur de trie? A oui vous savez pas ce que c'est un foncteur?
struct UnStructure
{
  int operator() (int x, int y)
  {
  }
}

Voici un foncteur binaire qui prend X et Y en paramêtre. On peut ensuite els utiliser pour trier des std::list des std::set et même les apliquer sur des std::string ^^

Bon ok, sa vous palit pas ^^
Alors finalement, créez un tableau de chifre de loto, et réaliser un trie aléatoire.(Vous êtes pas obliger de passer par un foncteur hein? Vous compliquez/simplifiez[Rayez la mention inutile] pas la vie ^^) En suite, le gas entre une grille de lotot, et on voi si il a gagner. Ok?
(Sa vous fera patienter jusca mon prochain défis sur les textures ;) )
  • Partager sur Facebook
  • Partager sur Twitter
4 février 2006 à 21:44:01

Bonjour tout le monde !! :D
Voila j'ai essayé de faire le défi proposé (le tour de magie) et j'ai une erreur dans mon code que je n'arrive pas à résoudre. :colere:
Pourriez-vous m'aider svp ? ^^

PS: J'ai le niveau des cours du SdZ [jusqu'au chapitre sur les pointeurs (je me noie un peu d'ailleurs :p )] et pourriez-vous me donner des conseils pour indenter mon code svp parceque c'est un poil indigeste :-°

Voici le code que j'ai tapé :
#include <stdio.h>
#include <stdlib.h>

void presentationEtRegle ();
long calculNombreJoueur (long nombrea,long nombreb,long nombrec,long nombred,long nombree,long nombref);

int main (int argc, char** argv)
{   int siNombreDansListe1=0,siNombreDansListe2=0,siNombreDansListe3=0,siNombreDansListe4=0,siNombreDansListe5=0,siNombreDansListe6=0;
    long nombrea=0,nombreb=0,nombrec=0,nombred=0,nombree=0,nombref=0,nombreJoueur=0;
   
    presentationEtRegle(1);
   
    printf ("Choisissez votre chiffre (compris entre 1 et 63)...\n");
    printf("Voici la premiere serie :\n\n\t1 3 5 7 9 11 13 15 17 19 21 23\n\t25 27 29 31 33 35 37 39 41 43\n");
    printf("\t45 47 49 51 53 55 57 59 61 63\n\n");
    printf("Votre nombre se trouve t-il dans cette serie (Oui=1 Non=0) : ");
    scanf("%ld",&siNombreDansListe1);
   
    if (siNombreDansListe1==1)
       nombrea=1;
    else
        nombrea=0;   
       
    printf ("\nChoisissez votre chiffre (compris entre 1 et 63)...\n");
    printf("Voici la premiere serie :\n\n\t2 3 6 7 10 11 14 15 18 19 22 23\n\t26 27 30 31 34 35 38 39 42 43\n");
    printf("\t46 47 50 51 54 55 58 59 62 63 \n\n");
    printf("Votre nombre se trouve t-il dans cette serie (Oui=1 Non=0) : ");
    scanf("%ld",&siNombreDansListe2);
   
    if (siNombreDansListe2==1)
       nombreb=2;
    else
        nombreb=0;   
   
    printf ("Choisissez votre chiffre (compris entre 1 et 63)...\n");
    printf("Voici la premiere serie :\n\n\t4 5 6 7 12 13 14 15 20 21 22 23\n\t28 29 30 31 36 37 38 39 44 45\n");
    printf("\t46 47 52 53 54 55 60 61 62 63\n\n");
    printf("Votre nombre se trouve t-il dans cette serie (Oui=1 Non=0) : ");
    scanf("%ld",&siNombreDansListe3);
   
    if (siNombreDansListe3==1)
       nombrec=4;
    else
       nombrec=0;
         
    printf ("Choisissez votre chiffre (compris entre 1 et 63)...\n");
    printf("Voici la premiere serie :\n\n\t8 9 10 11 12 13 14 15 24 25 26\n\t27 28 29 30 31 40 41 42 43 44 45\n");
    printf("\t46 47 56 57 58 59 60 61 62 63\n\n");
    printf("Votre nombre se trouve t-il dans cette serie (Oui=1 Non=0) : ");
    scanf("%ld",&siNombreDansListe4);
   
    if (siNombreDansListe4==1)
       nombred=8;
    else
       nombred=0;
         
    printf ("Choisissez votre chiffre (compris entre 1 et 63)...\n");
    printf("Voici la premiere serie :\n\n\t16 17 18 19 20 21 22 23 24 25 26\n\t27 28 29 30 31 48 49 50 51 52\n");
    printf("\t53 54 55 56 57 58 59 60 61 62 63\n\n");
    printf("Votre nombre se trouve t-il dans cette serie (Oui=1 Non=0) : ");
    scanf("%ld",&siNombreDansListe5);
   
    if (siNombreDansListe5==1)
       nombree=16;
    else
        nombree=0;
         
    printf ("Choisissez votre chiffre (compris entre 1 et 63)...\n");
    printf("Voici la premiere serie :\n\n\t32 33 34 35 36 37 38 39 40 41 42\n\t43 44 45 46 47 48 49 50 51 52\n");
    printf("\t53 54 55 56 57 58 59 60 61 62 63\n\n");
    printf("Votre nombre se trouve t-il dans cette serie (Oui=1 Non=0) : ");
    scanf("%ld",&siNombreDansListe6);
   
    if (siNombreDansListe6==1)
       nombref=32;
    else
       nombref=32;
   
    printf("Votre chiffre est %ld\n",nombreJoueur);
         
    system("PAUSE");
       
    return 0;
}   

void presentationEtRegle ()
{
     printf("\t\t*****Tour de Magie by Bladeee*****\n\n\n");
     printf("\tAide : Vous devez choisir un nombre entre 1 et 63 dans votre tete.\n");
     printf("L'ordinateur vous presentera ensuite 6 series de chiffres, et vous devrez lui\n");
     printf("indiquer pour chaque serie si le nombre que vous avez choisi appartient a la\n");
     printf("liste ou pas.\nApres ca l'ordinateur connaitra votre chiffre ;-)\n\n")
}

long calculNombreJoueur (long nombrea,long nombreb,long nombrec,long nombred,long nombree,long nombref)
{
      long nombreJoueur=0;
      return nombreJoueur = nombrea+nombreb+nombrec+nombred+nombree+nombref;
     
}     


Edit: Mon erreur: J'obtiens toujours comme réponse 0 :colere:

Edit 2:
Mon problème est résolu
  • Partager sur Facebook
  • Partager sur Twitter
4 février 2006 à 23:06:21

Voila j'ai un defi pour vous.
Moi je l'ai fait en une heure grace a la liste des sites proposé dans le forum et grace au cour de m@teo21.
Alors : Vous devré faire un programme en mode console quie ira charcher dans un fichier (celui ci : http://cyberneter.free.fr/liste.ini ) un dle nom d'un departement (seulement le nom) si vous ecriver le numero.
A vous de jouer.
Bonne chance
PS : pour les debutants vous pouver tout à fait y arriver, j'ai commencer en même temps que la V3.
  • Partager sur Facebook
  • Partager sur Twitter
5 février 2006 à 14:56:57

Moi j'ai un petit probleme dans mon pendu: Le mot ne s'affiche pas :'(
De plus, on doit dire la premiere lettre pour que ça marche!

Citation : erreur de la mort qui tue


plus d'erreurs marquées, mais les erreurs que je viens de dire sont restées :'(


Tenez, mon code

void pendu(const unsigned char mot_a_trouver[])
{
   long lettre_trouvees;
   unsigned char copie_mot_a_trouver[30] = {0}, lettre_choisie = 0;
   int longueur_chaine = strlen(mot_a_trouver);
   strcpy(copie_mot_a_trouver, mot_a_trouver);
   int i;
   
   for(i = 1; i < longueur_chaine - 1; i++)
      copie_mot_a_trouver[i] = '_'; /*merci elentar mais les autres erreurs sont restées  je ne comprend pas*/
     
   printf("Trouve le mot!!\n\n");
   do
   {
      lettre_trouvees = 0;
      printf("%s",copie_mot_a_trouver);
      printf("\nDis une lettre:");
      scanf("%s",&lettre_choisie); /* tout vient de la, mais si je met
      un %c, tout apparait deux fois!!*/

      printf("\n");
   
      for(i = 0; i < (longueur_chaine - 1); i++)
         if(mot_a_trouver[i] == lettre_choisie && copie_mot_a_trouver[i] != lettre_choisie)
         {
            copie_mot_a_trouver[i] = lettre_choisie;
            lettre_trouvees++;
         }
         
      if(lettre_trouvees)
         printf("Oui, il y a %d %c!!\n",lettre_trouvees, lettre_choisie);
                         
      else
         printf("Non, pas de %c..\n",lettre_choisie);
             
   }while(strcmp(copie_mot_a_trouver,mot_a_trouver) != 0);
   
   printf("%s!! Bravo!!",mot_a_trouver);
}
  • Partager sur Facebook
  • Partager sur Twitter
5 février 2006 à 14:59:43

'_' et non pas "_", c'est un char, pas une chaîne de caractères.
  • Partager sur Facebook
  • Partager sur Twitter
5 février 2006 à 15:12:45

Merci :) Mais il reste les deux erreurs juste au dessus.. C'est a cause du scanf("%s",&lettre_choisie); mais si je met un scanf("%c",&lettre_choisie); tout se réecrit deux fois.. :(

EDIT: J'ai trouvé :D Merci pour ceux qui ont essayé de m'aider ;)
  • Partager sur Facebook
  • Partager sur Twitter
9 février 2006 à 12:20:50

Salut a tous!
je viens de réaliser le jeu d'alumettes, et j'ai remarqué qu'avec la fonction d'intelligence artificielle, ca ne marche pas a tous les coups. En effet, si on laisse 7 alumettes, l'ordinateur en prends 1 alors qu'il devrait en prendre 2 pour en laisser 5...
quelqu'un saurait il comment faire pour remedier a ca
(je pourrais faire une condition si il reste 7 alumettes, mais j'aimerais faire autrement...)
merci d'avance! je me lance dans le proggrame suivant...
  • Partager sur Facebook
  • Partager sur Twitter
13 février 2006 à 13:54:37

Il n'y a personne pour m'aider ? :(
  • Partager sur Facebook
  • Partager sur Twitter
13 février 2006 à 19:44:53

Salut tout le monde. Tout d'abord je tiens à saluer cette idée de topic, comme tout le monde l'a fait avant moi. :D J'ai donc essayé de faire un pierre/feuille/ciseau, mais mon problème (enfin le principal) c'est que quoique fasse l'utilisateur, il perd! (enfin...non, le cas d'égalité semble fonctionner).
Je vous mets la fonction de comparaison et de choix de l'ordinateur (j'ose pas vraiment appeler ça une IA^^) ainsi que la partie de la fonction main correspondante, puisque je pense que l'erreur vient de là.

Fichier main.c (enfin une partie)
if (comparerChoix (choixJoueur, choixJeuOrdi(choixOrdi)) == 1)
    printf ("Vous avez gagne!\n");
   
    else if (comparerChoix (choixJoueur, choixJeuOrdi(choixOrdi)) == 2)
    printf ("egalite!\n");
   
    else
    printf ("Vous avez perdu!\n");



Fichier fonctions.c (une partie ici aussi)
long choixJeuOrdi (char* choixOrdi)
{
    long min = 1, max = 3, jeuOrdi = 0;
   
    srand(time(NULL));
    jeuOrdi = rand() % (max-min) + min; // L'ordi choisit un nombre qui détermine ce qu'il joue
   
    switch (jeuOrdi)
    {
           case 1 :
                sprintf (choixOrdi, "pierre");
                break;
               
           case 2 :
                sprintf (choixOrdi, "feuille");
                break;
               
           case 3 :
                sprintf (choixOrdi, "ciseau");
                break;
                }
               
    printf ("L'ordi a joue : %s\n", choixOrdi)//Ici je comprends pas pourquoi il       
    return choixOrdi;                            //affiche deux fois le printf
}


long comparerChoix (char* choixJoueur, char* choixOrdi)
{
     if (choixJoueur == "pierre" && choixOrdi == "ciseau") // On liste les cas gagnants
     return 1;
     
     else if (choixJoueur == "ciseau" && choixOrdi == "feuille")
     return 1;
     
     else if (choixJoueur == "feuille" && choixOrdi == "pierre")
     return 1;
     
     else if (strcmp(choixJoueur, choixOrdi) == 0) // On pense à un cas d'égalité
     return 2;
     
     else // Si ce n'est aucun des cas ci-dessus, c'est que le joueur a perdu
     return 3;
     
}   



Merci de votre aide. :) (en plus l'erreur est probablement toute simple...)


Edit : c'est bon merci quand même à ceux qu'auront essayé de m'aider (si y'en a eu lol), en fait l'erreur est au niveau des if, il semble qu'on ne puisse pas l'utiliser directement avec les chaînes, il faut utiliser strcmp, ce qui est un peu plus lourd comme code. (très grande ligne)
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 10:55:01

Et pourquoi ne pas faire des programmes utilitaires?
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 12:08:36

Bah 'veux bien moi, mais des programmes utilitaires en console...j'ai un peu de mal à voir ce qu'on pourrait faire en fait, t'as un exemple? :)
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 20:32:50

Bah je pensais comptez sur vous pour men donner...
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 20:36:03

Vous pourriez faire un truc qui génère une table de fréquence : ca prend du texte en entrée, et ca sort le nombre de fois que chaque caractère a été rencontré, par fréquence décroissante.

Ensuite, vous pourriez l'étendre aux séquences de 2, 3 lettres.
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 20:43:33

Hum merci ça a l'air intéressant ça...ça d'vrait m'occuper un p'tit moment. :D
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 22:56:55

@bluestorm-> C'est un truc de ce genre là que tu propose ? parce que j'ai pas très bien compris en fait :-° .

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void cmpCar(int tab[], char s[]);

int main(int argc, char *argv[])
{
    int car[26] = {0}, i;
    char test[] = "Ceci est un test";
   
    cmpCar(car, test);
    for(i = 0; i < 26; i++)
    {
        if(car[i])
        {
            printf("La lettre %c ", i + 65);
            printf("est presente %d fois.\n", car[i]);
        }
    }
   
    return 0;
}

void cmpCar(int tab[], char s[])
{
     int i;
     
     for(i = 0; i < strlen(s); i++)
         if(isalpha(s[i]))
             (islower(s[i])) ? tab[s[i] - 97]++ : tab[s[i] - 65]++;
}
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 23:02:21

C'est normal que je comprenne rien à ce code? o_O
Et c'est quoi le ctype.h? J'en ai jamais entendu parler lol.

Rassure-moi bluestorm, le truc que tu demandes c'est du niveau des tutos ou plus avancé?
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 23:15:17

Bah niveau des tutos, mais on peut le coder de manière plus avancée si on veut.

Son code à lui est pas sorcier, il met juste des trucs cryptiques du genre
c + 65 au lieu de c + 'a', ou c - 97 au lieu de c - 'A', etc... (ou l'inverse, je sais plus ;-)
  • Partager sur Facebook
  • Partager sur Twitter
15 février 2006 à 23:15:39

@_Azerty777 -> qu'est-ce que tu comprend pas ?
Si c'est les fonctions isalpha() et islower() ben la premiere prend en parametre un caractere, elle verifie si ce dernier est une lettre et renvoie un int qui a pour valeur 0 si ce n'est pas une lettre ou une valeur positive non nulle dans le cas contraire.
Pour islower c'est exactement pareil sauf que ça ne verifie pas si l'argument est une lettre mais une lettre minuscule.

A part ça, je pense que les cours suffisent pour comprendre.
  • Partager sur Facebook
  • Partager sur Twitter
16 février 2006 à 10:13:57

Citation : bluestorm

Vous pourriez faire un truc qui génère une table de fréquence : ca prend du texte en entrée, et ca sort le nombre de fois que chaque caractère a été rencontré, par fréquence décroissante.

Ensuite, vous pourriez l'étendre aux séquences de 2, 3 lettres.



C'est une bonne idée, et quand on aura un peu (beaucoup) plus le niveau on pourra s'en servir pour coder des programmes pour compresser des fichiers .
  • Partager sur Facebook
  • Partager sur Twitter
20 février 2006 à 9:58:05

Merci pour toutes ces idées. Je vais pouvoir m'entrainer et m'efforcer de faire de la programmation modulaire ;)
  • Partager sur Facebook
  • Partager sur Twitter
20 février 2006 à 11:16:58

Voila mon code pour les departement, mais j'ai du supprimer du fichier .ini la corse parce que mon code plante si je les garde c'est surement a cause du A ou B dans 2A 2B mais je pense trouver la solution avant ce soir :)
Secret (cliquez pour afficher)
#include <stdio.h>
#include <stdlib.h>

#ifndef MAIN
#define MAIN
#define TAILLE_MAX 128
//Création d'une structure pour ce qui ce trouve dans le fichier
struct Departement
  {
  int numDep;
  char nomDep[TAILLE_MAX];
  }lecture;
#endif

int main(int argc, char *argv[])
{
  //initialisation des variables
  int departement = 0;
  FILE *fichier = NULL;
 
  fichier = fopen("departement.ini","r");
  //ouverture fichier
  if(fichier != NULL)
    {
    do{
    printf("Tapez le chiffre du departement : ");
    scanf("%d", &departement);
    }while(departement < 0 || departement > 95 || departement == 20);
    do
      {
      fscanf(fichier,"%d %s", &lecture.numDep, &lecture.nomDep);
      }while(departement != lecture.numDep);
    printf("Le departement correspodant est : %s\n", lecture.nomDep);
    fclose(fichier);
    }
  else
    {
    printf("Probleme d'ouverture du fichier");
    }
 
  system("PAUSE");
  return 0;
}

  • Partager sur Facebook
  • Partager sur Twitter
7 mars 2006 à 13:52:32

Pour revenir sur un post du haut de la page : c'est quoi le PPCM (plus petit commun multiple ?)
Parce que moi je connais le PGCD mais pas le PPCM ...
Voila repondez moi et je vous laisse retourner à vos defis ...
Sinon vous n'avez pas proposé de RPG, au moins ce serait au niveau de tout ceux qui lisent les cours du sdz ... ^^
  • Partager sur Facebook
  • Partager sur Twitter
7 mars 2006 à 15:43:53

Bah le plus petit multiple commun :

Les multiples de 6 sont 6, 12, 18, 24, 30...
Les multiples de 9 sont 9, 18, 27, 36...
Le ppcm de 6 et de 9 est 18.
  • Partager sur Facebook
  • Partager sur Twitter
7 mars 2006 à 17:59:12

Merci je l'ai pas encore vu à l'ecole !
Allez je vous laisse retourner à vos jeux ;)
  • Partager sur Facebook
  • Partager sur Twitter
2 février 2007 à 21:43:49

salut, je poste se message pour que se sujet rediviennent actif, car je le trouve excellent ;) .
J'ai fini tous les prog present dans cette parti, si des personne peuvent en rajouter sa m'arrangerait :D
  • Partager sur Facebook
  • Partager sur Twitter
28 avril 2008 à 14:41:24

bonjour a tous
je viens juste de m'inscrire avec vs et j'espere que ça sea un pluuuuuus pour moi car malgré que je fais l'informatique depuis deux j'ai bcp de problemes de programmation pour cette année j'ai etudié le langage c et j'etais cencé de realiser un projet de fin d'année mais je me suis trop cassée la tete et j'ai enfin fait un jeu tres banal *en fait par raport a qqs etudiants avec moi ça parits ridicule mais bon pds les vacances je vais refaire le cours et je compte sur ce site pour l'aide
voila pour le moment je propose un jeu pour tous les zeros si vs pouvez le programmer
**************jeux sudoku****************************************

<information></information>bon moi j'ai essayé mais ça pas marché avec moi tjr il y a <erreu</erreur>des erueurs de compilation et j'arrive meme pas a identifier l'erreur</span>
  • Partager sur Facebook
  • Partager sur Twitter