Lancement en C

Fermé
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011 - 2 déc. 2009 à 18:57
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011 - 19 déc. 2009 à 19:21
Bonjour,

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

int lancerDe(int resultat) 
{ 
srand(time(NULL)); 
resultat=rand()%6+1; 
printf("resultat de lancement du de : %d",resultat);
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",resultat);  
    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);
           for( i = 0 ; i < 10 ; i++)
           
/*{
    resultat = lancerDe(3);
    tab[i] = resultat;
 for( i = 0 ; i < 10 ; i++)
{*/
     
    
    
  
/*}  

    printf("lancer n° %d : %d", i, tab[i]);
    if(i = 5) */
    
    
    
    
    
    
    
    
     
return (0); 

  } 

Exxecution
Lancer le de dix foix:
resultat de lancement du de : 4

resultat de lancement du de : 4

resultat de lancement du de : 4

resultat de lancement du de : 4

resultat de lancement du de : 4

resultat de lancement du de : 2

resultat de lancement du de : 2

resultat de lancement du de : 2

resultat de lancement du de : 2

resultat de lancement du de : 5
ca c'est le reultat si nefaus/* */
avec
/*{
resultat = lancerDe(3);
tab[i] = resultat;
for( i = 0 ; i < 10 ; i++)
{*/
si j'enlève les accolade le compilateur me dit
Pour complement je suis suposer d`
afficher les faches ontenus a chaque lancer
le nb de de avec la face 5
le nomde de avec la face tire 2
afficher les poisition dane le tableau des ayant la valeur 1comme face tiré
afficher les position dans le tableau des ayant la vakeur 6
la face tiré de trouvant la la position 3
le tableau des trie croissant.....

42 réponses

Le concombre domestiqué
4 déc. 2009 à 00:46
Salut

1ere étape : apprendre comment lire une donnée
#include <stdio.h>
int main()
{
char s[20];
printf("Taper qqe chose :");
scanf("%s", s);
printf("qqe chose=%s\n", s);
}


Pour être honnête, je ne fais pas de C. Je l'ai survolé voilà longtemps et ai refusé de m'en servir.
Néanmoins, l'exemple ci-dessus est facilement construit grâce aux exemples et tutos dispo sur le web
1. char s[20] déclare un tableau de 20 caractères. Nous y stockerons notre saisie
2. printf("taper qqe chose") provoque l'affichage de Taper qqe chose
3. scanf("%s", s) attend que l'on tape des caractères au clavier et les stocke dans s
4. printf("qqe chose=%s\n", s) substitue s( ce qu'on vient de taper) à %s dans la chaine et l'imprime
=> ainsi, on peut vérifier que l'on utilise bien le scanf : ce qui est affiché correspond à ce que l'on a saisi.

2eme étape: apprendre à répéter jusqu'à
Fort de cette connaissance, nous pouvons écrire un programme qui répète une action ...
#include <stdio.h>
int main()
{
char s[20];
int n;
printf("Ici se trouve la première partie de mon programme\n\n");
do
  {
  printf("--\nIci se trouve le traitement à répéter\n--\n");
  printf("Voulez-vous continuer (0 pour Oui, autre chose sinon) : ");
  scanf("%d", n);
  printf("réponse lue = %d\n", n);
  } while(n != 0);
printf("Ici se trouve la dernière partie de mon programme\n");
}


Et voilà ! nous avons un programme qui exécute une première partie (affichage d'un message), répète une partie principale (affichage d'un autre message) se terminant par un "faut-il continuer". Une réponse négative permet de sortir de cette répétition et d'arriver sur une partie finale (affichage d'un autre message).

Toutes ces instructions, ces fonctions sont en fait des briques, des outils pour construire des programmes. Tant que tu ne maitrises pas l'outil, que tu n'es pas à l'aise avec la brique, tu dois continuer à l'apprendre encore et encore jusqu'à ce qu'il te devienne naturel, instinctif. Quitte à prendre un projet vide juste pour tester (pour apprendre en fait) tel outil ou telle brique que tu ne maitrises pas. Car ce ne sera que lorsque tu maitriseras ces outils et ces briques que tu pourras les assembler en des programmes complexes

Donc n'hésite pas à reprendre l'embryon de ton programme, celui qui se contentait d'appeler lancerDe() et d'afficher le résultat. Une fois que tu seras à l'aise avec les fonctions et instructions utilisées, alors tu pourras commencer à complexifier ton programme en introduisant une répétition du tirage, puis un stockage de ce tirage dans un tableau, puis un tri du tableau et finalement un affichage. Assure-toi de maitriser chaque étape, de pouvoir expliquer chaque instruction et chaque comportement... et (sinon c'est pas rigolo) tout ça en étant toujours strict avec la présentation et l'organisation du programme source.

Exercice n° 1: reprendre l'exemple 2 en remplaçant la partie répétitive par le tirage du dé
1
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
3 déc. 2009 à 00:48
C'est que je peur sortir un chiffre aleatoire entre 1 et 6 10 fois, et de denamder a l'utilisateur si'il veur recommencer, mais lorsque je demande d'afficher un tableau ou de faire un printf comme :printf(''%d''resultat[resultat] ca ne fontionne pas.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 déc. 2009 à 20:00
Bonjour,*

S'il vous plaît
Merci
Au revoir
etc.
Sont monnaie courante quand on veut obtenir quelque chose !

Saine lecture...
A voir aussi

Merci de votre compréhension.

;-)

* Ne pas en tenir compte si présent dans le message initial, mais bon vu qu'il est ajouté automatiquement, ça ne fait pas de mal.
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
3 déc. 2009 à 01:37
Il y a quelques erreurs, je vais essayer de toutes les trouver ;-)
printf ("liste des %d resultats:",debut, fin);
printf("Lancer le de dix foix:\n",resultat);
printf("Voulez-vous jouer une autre partie: o/n",reponse);

Il faut autant d'arguments que ceux demandés dans le format (ni plus, ni moins). D'autre part, 'printf' ne fait pas de saisie. Donc 'resultat' et 'reponse' ne seront pas initialisés.
if(i = 5)
Tu veux sans doute comparer 'i' à 5, mais en fait tu attribues 5 à 'i', puis tu testes si 'i' est différent de zéro... il faut mettre 'if(i == 5)'.
Bonne continuation.
0
Le concombre embarqué
3 déc. 2009 à 05:54
Bonjour
En fait, ya un truc qui m'amuse :D c'est que j'ai l'impression que tu ne lis pas (ou peu) les réponses qui te sont faites. Ça fait 4 ou 5 fois que tu postes ce source avec à chaque fois une petite variation et il faut tout reprendre depuis le début.
Pourquoi poser des questions si c'est pour ignorer les réponses ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
3 déc. 2009 à 19:23
Pour etre franc avec vous c'est que j'essaye avec ma modeste comprehension des chose de metre en pratiquevos conseil que j'aprécie enormément et même parfois surpris de tout le temps que vous y metter mais lorsque je les met dans le compilateur sa ne fonctionne pas ou moderemment je travaille avec un certain temps et les probleme persiste, mais je ne lache pas et decide de vois reecrire un e-mail. Jwe travaille sur certain projet ca va assez bien ,mais quand je comprens pas, JE comprends pas
Merci de votre aide, j'ai besoin peut -etre en ce moment que vous soyer plus precis, en ce qui concerne l'école cela a peur d'importance pour moi, jai 50 ans et je ne deviendrai pas informaticien. Je vous expliquerait pas ma vie, mais j'aime ça quand même meme si je ne suispas tres bon pour moi c'est comme un excexcice .
Merci
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
3 déc. 2009 à 20:42
Comme dans ce programme, il me donne les dix chiffres au pseudo-aleatoire, mais il ne me demande même pas si je veux recommencer a jouer,En plus je veux pouvoir imprimer ou faire un tableau de ces dix chiffre pour voir ci c'est fait et en même temps voir si je peux faire afficher une position d'un nombre que j'ai obnenu.Parfois ca marche et d'autre fois je fais une manipulation et la question voule vous rejouer ne se fait plus mais j'ai de la difficulté a savoir pouquoi.
J'ai d'autre chose a faire, mais je dois réussir a faire cela correctement pour aller plus loin, Je dois reussuir cela avant d'aller plus loin. Merci
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
3 déc. 2009 à 20:57
En passant :1 return exist status veut dire?
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
3 déc. 2009 à 22:30
AVEZ-VOUS REMARQUEZ J'AI DE LA DIFFICULTÉ A COMPRENDRE -)
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
3 déc. 2009 à 22:52
Lorsqwue je pose une question ex voulez vous jouer une novelle partie et apres combien d'entier voulez vous traiter. Que dois-je faire pour quel attende la reponse a la premiere question? Merci
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
4 déc. 2009 à 01:09
mais le problème ici est que les valeur ne vienne pas d'un scans, mais du systeme qui me permet de donner des nombre aleatoire que je dois mettre dans un tableau, mais lorsque j'essaye de afficher du tableau que le rand me donne ca ne marche pas. Et c'est essentiel pour ce programme donc je tourne en rond. Comme tu peut le voir je suis capable d'obtenir mes nb aleatoire, mais incapable de faire afficher le tableau de ses chiffre, mais c'est pas obligatoire de le faire pour le travail, mais essentielle pour la suite du precessus. C'est comme je veux constriure un immeuble ,mais il me manque une sorte de brique pour le plan. Merci
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
4 déc. 2009 à 02:21
tu peut explique comment tu veut faire ton programme et il va faire quoi exactement ?
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
4 déc. 2009 à 02:49
/*Programme type jeux ''lancer de dé'' dans lequel il faut que l'utilisateur lance
un dé 10 fois.
A la fin de la partie, le programme affiche
1)les faces obtenues à chaque lancer du dé,
2)le nombre de dés avec la face tirée 2,
3)le nombre de dée avec la face tiré de 5,
4)afficher les positions dans le tableau 'dés' ayant la valeur 1 comme face tirée
5)afficher les positions dans le tableau 'dés' ayant la valeur 6 comme face tiree,
6)La face tiree par le dé se trouvant à la position 3 du tableau des;
7)La face tirée par le dé se trouvant à la position 8 du tableau des,
9)Le tableau des en ordre croissant des faces tirée du dé.*/
mon debut d'essai est plus dans les post
Merci
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
4 déc. 2009 à 10:55
Ce que je voudrait c'est pas de condtrire le programme, mais juste de me montre comment une fois que j'ai obtenue met nb aleatoire les mettre dans un tableu et d'afficher ce tableau
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
4 déc. 2009 à 14:02
OK DOki
au début je te conseil de ne pas utiliser des fonction
pour se qui est du programme, ta besoin de déclaré un tableau de 10 int et tu va le remplier avec des nombre aléatoire de 1 à 6 ex:
int tab[10];
srand(time(NULL)); 
for(int i=0;i<10;i++){
tab[i]= 1+ (int) (rand()%6);
printf("face obtenu ",tab[i]);
}

pour l'affiche
printf("|");
for(int i=0;i<10;i++){
printf("  %d  |",tab[i]);
}
printf("\n");
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
4 déc. 2009 à 20:16
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int i;
int tab[10];
srand(time(NULL));
for(int i=0;i<10;i++){
tab[i]= 1+ (int) (rand()%6);
printf("face obtenu ",tab[i]);
}

/*pour l'affiche */
printf("|");
for(int i=0;i<10;i++){
printf(" %d |",tab[i]);
}

return;
}

Tu vois en fisant cela j'aurais pensé que j'aurais les nb, mais j'ai ce message
F:\JouerDeefonctionnel\DERNIER100.c In function `main':
67 F:\JouerDeefonctionnel\DERNIER100.c redeclaration of 'nbElement' with no linkage
62 F:\JouerDeefonctionnel\DERNIER100.c previous declaration of 'nbElement' was here
74 F:\JouerDeefonctionnel\DERNIER100.c `nbElement' undeclared (first use in this function)
(Each undeclared identifier is reported only once
Et c'est la le hic!, c'est que je ne sais comment apporter les changement du compilateur pour corrigé
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
4 déc. 2009 à 21:11
En plus use outside C99 cela signifie? (commentaire du compilateur)Merci
0
Le concombre perfusé
4 déc. 2009 à 21:25
Salut

nobie-cs t'a fourni un source. tu devrais le taper tel quel (sauf le int dans la partie affichage) sans rien d'autre, le compiler et l'exécuter.
une fois que tu auras constaté que ça fonctionne, tu pourras alors en récupérer des bouts pour les mettre dans DERNIER 100.c. pas avant

car l'erreur que tu nous décris concerne un 'nbElement' qui n'existe pas dans le pgm de nobie-cs ; de plus ton programme a au moins 74 lignes alors que celui fourni par nobie-cs n'en comporte qu'une vingtaine => tu prends un bouts de code censé fonctionner pour le mettre dans un programme qui ne fonctionne pas et tu viens ensuite dire que le bout de code est erroné !
C'est la même chose que prendre une voiture sans aucune roue, mettre un moteur neuf dedans et d'annoncer que si la voiture n'avance pas c'est à cause du moteur
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
4 déc. 2009 à 22:07
Ta comparaison est amusante, mais je n 'accuse personne j'essaye juste de comprendre.
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
4 déc. 2009 à 22:32
<code>#include <stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int tab[10];
srand(time(NULL));
for(int i=0;i<10;i++){
tab[i]= 1+ (int) (rand()%6);
printf("face obtenu ",tab[i]);
}
return;
}</code
>
C'est comme dans cela le compilateur me dit

C:\Documents and Settings\Claude\Mes documents\vendredi01.c In function `main':
9 C:\Documents and Settings\Claude\Mes documents\vendredi01.c 'for' loop initial declaration used outside C99 mode

Je ne comprens pas ce que le compilateur veut me dire, donc c'est pour cela que je fait appelle a vous.Normalement je comprends assez bien l'anglais, mais dans le contexte informatique surtout quand il y a des numero comme C99, cela me rend perplexe. Merci
Jaser j'aime bien cela ,mais pour avancer CEST COMME-CI COMME ÇA
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
5 déc. 2009 à 02:31
Je traduis avec quelque approximation le râlement du compilateur:
Dans la fonction 'main' à la ligne 9, il y a une erreur dans la déclaration de l'initialisation de la boucle 'for' sauf selon la norme C en date 1999,.
En clair, si on ne se conforme pas à la norme C99 (ou plus) il est interdit de déclarer 'i' dans l'initialisation; on doit donc déclarer 'i' avanr la boucle 'for'.
Bonne continuation.
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
4 déc. 2009 à 23:23
#include <stdio.h> 
#include<stdlib.h> 
#include<time.h> 
main()
{
int tab[10];
srand(time(NULL)); 
for(int i=0;i<10;i++){
tab[i]= 1+ (int) (rand()%6);
printf("face obtenu ",tab[i]);
}
return;
}

Je voudrait juste que cette partie fonctionne,mais le compi me dit

in function main
9 C:\Documents and Settings\Claude\Mes documents\vendredi01.c 'for' loop initial declaration used outside C99 mode SVP.SVP.
faite que cela fonctionne au moins
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
5 déc. 2009 à 14:19
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int tab[10];
int i;
srand(time(NULL));
for(i=0;i<10;i++){
tab[i]= 1+ (int) (rand()%6);
printf("face obtenu : %d",tab[i]);
}
return 0;
}
dsl je savait pas que la norme interdit la déclaration de i dans la boucle :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843 > nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010
5 déc. 2009 à 14:30
Salut,
En C89/90, c'est interdit. Mais C99 autorise la déclaration de i dans la boucle. C'est ce qu'explique son compilateur qui par défaut n'est pas en iso C99.

Cdlt
0
Le concombre perfusé
4 déc. 2009 à 23:46
Pas de bol !

un coup d'œil dans google liste pas de mal de plaignants qui se sont pris le même rejet : il est interdit de déclarer une variable dans le for (bien que les concepteurs du C n'imaginaient pas interdire quoi que ce soit) !
donc remplace
for(int i=0; etc
par
int i;
for(i=0; etc
et l'erreur disparaîtra ;-)
0