Lancement en C
Moustiquet
Messages postés
212
Date d'inscription
Statut
Membre
Dernière intervention
-
Moustiquet Messages postés 212 Date d'inscription Statut Membre Dernière intervention -
Moustiquet Messages postés 212 Date d'inscription Statut Membre Dernière intervention -
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
Salut
1ere étape : apprendre comment lire une donnée
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 ...
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é
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é
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.
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.
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.
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.
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.
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 ?
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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
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
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
/*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
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
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
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:
pour l'affiche
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");
#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é
#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é
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
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
<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
#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
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.
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.
#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
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
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; etcpar
int i; for(i=0; etcet l'erreur disparaîtra ;-)