Programme en C

Fermé
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011 - 26 nov. 2009 à 21:23
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 27 nov. 2009 à 15:41
Bonjour,
printf("\n"); 
getchar(); 
return resultat; 
} 
void afficher (int tableau [], int nbElem, int debut, int fin)
{  
     int i;
     printf ("liste des %d resultats:",debut, fin);
     for (i=0; i<nbElem; i++)
       if( i<debut || i >= nbElem-fin)
       printf(" i tableau[i]");
       else
       if (i==debut)
       printf("%4d) ect...\n", i);
       printf("\n");
       }
int main() 
{ 
     int resultat;
     int i;
     char reponse;
     int tab[10]; 
     printf("Lancer le de dix foix:\n");   
    srand(time(NULL));
do {   for( i=0;i<10;i++)
    resultat=lancerDe(3);
        tab[i]=1+ (int) (rand()%6);
      }while (tolower(reponse)=='o');
      printf("Voulez-vous jouer une autre partie: o/n",reponse);
 
 
getchar(); 
return (0); 
}

Je vais essayer d'être clair. Dans ce programme j'ai mes resultats d'un lancement de dé aleatoire de 10 coups.
Je me demande comment je peut réafficher les résultats dans le tableau pour que je puisse manipuler ces résultat comme trier, afficher
un élément du tableau..ect?Il y a quelque chose que je ne saisie pas.

4 réponses

nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
26 nov. 2009 à 22:56
j'ai pas trop bien compris ton programme :) mais bon c'est pas trop grave
pour affiche un élément du tableau il suffit de connaitre son indice ex : printf("%d",tableau[indice]);
pour afficher tout le tableau

for( i=0;i<nbElem;i++)
       printf("%d",tableau[i]);
      }
0
Le concombre démasqué
27 nov. 2009 à 03:00
Bonjour,

1. tu définis une fonction Afficher() mais tu ne t'en sers pas (ou tu ne t'en sers plus)
2. dans cette fonction, tu affiches un texte et une variable mais tu fournis deux variable
3. dans main(), tu utilises une fonction lancerDe() inexistante (à moins que ce soit elle qui ait été tronquée en début de post)

ensuite, essaie de te décider sur une présentation de ta programmation pour toi et ceux à qui tu demandes un peu d'aide s'y retrouvent rapidement (et ainsi éviter de passer bcp de temps à essayer de comprendre à quoi ça sert).

j'aurais aussi tendance à te conseiller d'utiliser systématiquement les accolades ouvrantes et fermantes derrière les for, if et else. Ça ne coûte pas grand chose de les mettre et ça permet de repérer rapidement ce qui doit s'exécuter plusieurs fois dans une boucle for(), ou de bien délimiter ce qui est exécuté après le if ou le else. Et là où c'est le confort, c'est lorsque tu veux ajouter une instruction au corps de la boucle, ou du if ou du else

ex:
for( i = 0 ; i < 10 ; i++ )
  fairececi();
  fairecela();
=> fairececi() est appelé 10 fois, fairecela() une seule!
for( i = 0 ; i < 10 ; i++ )
  {
  fairececi();
  fairecela();
  }
=> fairececi() est appelé 10 fois, fairecela() 10 fois aussi !
nota: je cause de ça parce que la présentation me le laisse penser

et finalement, j'aurais tendance à te conseiller de ne pas courir plus vite que la musique, de bien assimiler une instruction avant de passer à la suivante, tu n'en progresseras que plus vite.

par exemple : apprendre à écrire
printf ("liste des %d resultats:", debut + nbElem - fin + 1); ou
printf ("liste des %d premiers et %d derniers resultats:",debut, nbElem-fin+1); au lieu de
printf ("liste des %d resultats:",debut, fin);

ou alors
printf("%dème tirage: %d", i, tableau[i]); au lieu de
printf(" i tableau[i]");

et ensuite à compter
/* tirage */
for( i = 0 ; i < 10 ; i++)
{
    resultat = lancerDe(3);
    tab[i] = resultat;
}
/* affichage */
for( i = 0 ; i < 10 ; i++)
{
    printf("lancer n° %d : %d", i, tab[i]);
    if(i = 5)
    {
        printf("\n");
    }
}
0
Le concombre démasqué
27 nov. 2009 à 03:19
tsss il fallait écrire : if( i == 5)
0
Winfly Messages postés 16 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 27 avril 2010 2
27 nov. 2009 à 03:14
Voici un example tirer de MSDN que j'ai modifier avec la boucle et la question :

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void main(void)
{
   int i;

   /* Seed the random-number generator with current time so that
       the numbers will be different every time we run.  */

   srand((unsigned)time(NULL));

   do
   {
      /* Display 10 numbers. */

      for(i = 0; i < 10; i++)
         printf( "Résultat #%d:  %6d\n", i, rand());
      
      printf("\n\nVoulez-vous jouer une autre partie: (o/n) \n");
   }
   while (tolower(getchar()) == 'o');
}

ou dans un tableau mais inutile si seulement pour affichage ...

void main(void)
{
   int i, Tableau[10];

   /* Seed the random-number generator with current time so that
       the numbers will be different every time we run.  */

   srand((unsigned)time(NULL));

   do
   {
      /* Display 10 numbers. */

      for(i = 0; i < 10; i++)
         Tableau[i] = rand();
      
      for(i = 0;i < 10; i++)
         printf( "Résultat #%d:  %6d\n", i, Tableau[i]);
      
      printf("\n\nVoulez-vous jouer une autre partie: (o/n) \n");
   }
   while (tolower(getchar()) == 'o');
}



J'adore le C/C++

https://www.winfly.net/
0
Winfly Messages postés 16 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 27 avril 2010 2
27 nov. 2009 à 03:41
Désolé,
J'avais pas vu qu'il falait le trier et voila :

void SortTable(int *Tableau, int n)
{
   int i, Sw, Cont = 1;

   while (Cont)
   {
      Cont = 0;
      for (i = 0; i < n-1; i++)
         if (Tableau[i] > Tableau[i+1])
         {
             Sw = Tableau[i];
             Tableau[i] = Tableau[i+1];
             Tableau[i+1] = Sw;
             Cont = 1;
         }
   }
}

void main(void)
{
   int i, Tableau[10];

   /* Seed the random-number generator with current time so that
       the numbers will be different every time we run.  */

   srand((unsigned)time(NULL));

   do
   {
      /* Display 10 numbers. */

      for(i = 0; i < 10; i++)
         Tableau[i] = rand();

      SortTable(Tableau, 10);
      
      for(i = 0;i < 10; i++)
         printf( "Résultat #%d:  %6d\n", i, Tableau[i]);
      
      printf("\n\nVoulez-vous jouer une autre partie: (o/n) \n");
   }
   while (tolower(getchar()) == 'o');
}

0
Alfred > Winfly Messages postés 16 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 27 avril 2010
27 nov. 2009 à 08:46
Non, on ne réinvente jamais la roue.
Les fonctions de tris (dichotomiques) sont incluses en standard (1 ligne de code...)
0
Winfly Messages postés 16 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 27 avril 2010 2 > Alfred
27 nov. 2009 à 14:58
Oui, mais Alfred c'est beaucoup mieux quand ont sait comment elle marche et je suis d'accord quand ont veux optimiser le code. Tu pourrais me nommé cette fonction en C/C++ ?
0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
27 nov. 2009 à 15:41
0