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

Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
5 déc. 2009 à 00:25
J'apprécie une réponse, mais j'ai jamais deposé int dans un for?
type for(int i=0...???
0
Le concombre perfusé
5 déc. 2009 à 01:48
Je me permets de te quoter

<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


tu reconnais ce post ?
tu vois la ligne entre srand(time(NULL)) et tab[i]= 1 + (int)(rand()%6) ?
j'y lis le mot int à l'intérieur du for(). Enlève-le selon le post 21 et ça devrait fonctionner.
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
5 déc. 2009 à 20:22
J'avais ecris un message et il a été bloqué sur l'autre post, mais j'ignore pourquoi
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 897
5 déc. 2009 à 20:25
Pourquoi ?

Pour les raisons invoquées ici !!!
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
5 déc. 2009 à 20:32
Et vous etes?
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 897
5 déc. 2009 à 20:35
Un empêcheur de doublonnage.
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
5 déc. 2009 à 20:38
C'est possible de me repondre d'un facon que l'on s'adresse pas a un enfant de 4 ans
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 897
5 déc. 2009 à 20:47
Monsieur,

Les forums de CCM sont soumis à une charte, dont il est demandé à tous les utilisateurs, qu'ils soient anonymes, membres, contributeurs ou modérateurs, d'en suivre et d'en respecter les règles.

Les posts en double, ou plus communément appelés "doublon", en font partie et sont de ce fait pas autorisés pour la simple et bonne raison, je cite :

Pour assurer un maximum de confort de lecture des forums et garantir la cohérence des
réponses un seul des messages a été laissé accessible en écriture.


C'est plus clair ?
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
5 déc. 2009 à 20:53
La structure du programme avait tellement changer que je pensait que personne se serait mis a lire les 30 posts sur un sujet et s'y retrouver, C'est pour cette raison et j'ai ou avait recommecer un autre post.Regarder les posts et nommé moi les envois avec plus de 30 reponses. En fait cela n'a pas vraiment d'inportance pour moi.
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
5 déc. 2009 à 23:02
Je vais expliquer quelques chosepeut-etre que tu trouvera cela laconique, mais enfin...
¸Je me suis inscrit a un cours de programmation en septembre ca tres bien commencer, car pour la serie 1 (abc) pour le TP1, j'ai eu 100 %. BRAVO BRAVO, mais des raison que je vais passer ma memoire et monapprentissage est maintenant extremement diminué, donc rapidement le rythme du cours ou j'aurais eu besoin de beaucoup d'exercice pour bien assimilé la base, rapidement on tous a demander de programme plus compliqué et trop rapide pour moi.
Donc mes algorythme , sont devenu mal structuré et ainsi j'ai commencer a mal travaillé, car je voulait remettre cela a temps, mais maintenant je lâche prise, car je ne peux aller a ce rythme....et tatati tatata..j'aipas le gout de continuer mon histoire, mais je crois que c'est suffisant
Et pour le changement de post je pensait que sa simplifiait les chose pour quequ'un qui vient pas regulierement sur ce site...
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 897
6 déc. 2009 à 17:17
Je comprends et je compatis.

Et pour le changement de post je pensait que sa simplifiait les chose pour quequ'un qui vient pas regulierement sur ce site...
Ben non justement. La simplification pour ceux qui essaient d'aider c'est de savoir ce qui a déjà été fait ou entrepris, afin de synthétiser le tout et d'aller à l'essentiel.

Le fait d'ouvrir un nouveau post, fait en gros recommencer tout à zéro, d'où une perte de temps et la redondance des informations bien souvent.


De plus poster un nouveau message avec juste du code à l'intérieur, sans un mot d'explication ni même un lien vers l'ancien sujet, ne sert strictement à rien, et c'est (à ton insu) méprisé la communauté. D'où la fermeture du sujet, et le renvoi vers celui-ci pour une meilleure compréhension et je te le souhaite, une résolution du problème.

Bon fin de week-end.
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
6 déc. 2009 à 17:08
#include <stdio.h> 
#include<stdlib.h> 
#include<time.h> 
int main()

{
    
int i;

char reponse;

int tab_de[10];
printf("Jouer une partie et lancer le de 10 fois");

srand(time(NULL)); 
for(i=0;i<10;i++){
tab_de[i]= 1+ (int) (rand()%6);
printf("face obtenu \n\n\n",tab_de[i]);
}

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

}
printf("\n");
printf("La numero obtenue aux position 3 et 8 des lances:%d %d\n",tab_de[2],tab_de[7]);

{	
    
	int nbElement; /* le nombre effectif d'elements dans le tableau t */
	int i;         /* position courante */
	int j;         /* position a droite de la position courante */
	int temp;      /* variable temporaire pour l'echange */
	int indMin;
    int t[indMin];    /* position de la valeur minimale */

        if (nbElement=tab_de[10]);

   

	/* lecture des éléments du tableau */
	printf("Entrez %d entiers: \n", nbElement);

	for (i = 0 ; i <= nbElement - 1 ; i++)
		scanf("%d", &tab_de[i]);

	/* tri : pour chaque position du tableau (sauf la derniere) */
	for (i=0; i <= nbElement - 2 ; i++)
        {
           indMin = i;
           /* on trouve la valeur minimale a droite */
           /* et on echange seulement si valeur minimale trouvee */ 

           for (j = i + 1; j <= nbElement - 1 ; j++)
           {
              if (t[j] < t[indMin])
                 indMin = j;
           }

           /* si necessaire, echange les valeurs de t[indMin] et t[i]*/
           if ( indMin != i )
           {
              temp = t[indMin];
              t[indMin] = t[i];
              t[i] = temp;
           }
        }

	/* affichage du tableau trie */
	printf ("\nTableau trie: \n");

	for (i = 0 ; i <= nbElement - 1 ; i++)
		printf("%d ", tab_de[i]);
	printf("\n");
}	
getch();return;

}
Quand je di que j'ai travaillé pour réussir mon code de tri, ce n'est pas farfelu, le compilateur ne me renvoi rien, mais le reste du programme se fait mais a l'arrivé du tri le programme s'arrête là.
Pendant que j'espère que vous ayez la patience d'aider je ne refuse pas. Je ne suis pas un bougre, je suis simplement un individu qui est passé de professionel a trouble leger de deficience mental. J'en suis le premier désolé, mais cela explique aussi pourquoi j'ai tendance a faire ou vouloir faire des activité intellectuelle parfois au dessus de met capacité,mais cela n'est pas mauvais, il s'agit que je ne prenne pas trop au sérieux le mépris que l'on puisse avoir envers moi.
Bonne journée.
0
le concombre équarquillé
6 déc. 2009 à 18:49
Salut,

Il y a qqes "trucs" qui, s'ils ne sont pas faux, ne correspondent pas à ce que tu voulais faire.

1. if (nbElement=tab_de[10]);
Le if sert à exécuter une action spécifique si une (ou plusieurs) conditions sont remplies. Ici, il semble qu'il faille faire quelque chose de particulier si le nbElement est égal au 10e tirage. Mais aucune action n'est entreprise ! le point-virgule ';' indique au compilateur la fin des actions à accomplir si la condition est remplie.
Quant à la condition, je doute que nbElement soit égal à qqe chose de cohérent car cette variable a simplement été déclarée et à nul moment avant ce test on a stocké qqe chose (on ne voit pas nbElement = calcul)
Mais là où le compilateur est traitre, c'est que dans le test tu ne testes pas une égalité (avec l'opérateur ==) mais tu affectes une valeur à nbElement, cette valeur étant le tirage stocké dans tab_de[10] (0 car tab_de[10] n'a jamais reçu une valeur). Lors de l'exécution, le résultat de cette affectation (0) sera compris comme "la condition n'est pas remplie" et donc l'action spécifique ne sera pas exécuté.

2. donc comme nbElement est égal à 0, le for pour répéter des scanf() va compter de 1 à nbElement-1. Ce qui revient à aller de 1 à -1. Aucun scanf n'est exécuté, donc il ne t'est demandé aucune valeur (c'est pas bien grave car la 1ere partie du pgm a stocke une valeur aleatoire entre 1 & 6 dans tab_de[0] à tab_de[9].

3. Pareil pour le tri : comme l'on traite les elements de 1 à nbElement - 1 (tjrs -1), rien n'est exécuté

4. Pour le dernier affichage (celui où l'on affiche le tableau trié), on repart dans une boucle allant de 1 à -1 donc on ne fait rien.

suggestions:
* corriger la ligne if (nbElement = tab_de[10]) en nbElement = 10; le reste du pgm devrait mieux fonctionner (enfin, je l'espère car je n'y ai rien regardé)
* quand un fonctionnement étrange survient, il ne faut pas hésiter à parsemer son programme de printf("à tel endroit, la valeur de variable est %d\n", variable); afin de comprendre pourquoi un if enchaine sur un else alors qu'on espérait l'inverse ou pourquoi mon for ne s'exécute pas ou toute autre situation où l'on ne pige pas pourquoi le pgm réagit d'une manière inattendue
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
6 déc. 2009 à 21:59
int j,indmin,q; 
int tab;
for(i=0;i<10;i++) 
{ indmin=tab_de[i];printf("%d",indmin);
for(j=i+1;j<10;j++) 
if(tab[j]<tab_de[i]) indmin=j; 
q=tab_de[i]; 
tab[i]=tab[indmin]; 
tab[indmin]=q; 

si je travaille avec ces ligne sa ne fonctionne pas, mais si je met indmin=tab_de ca fontionne,j'obtiens en faisant roulé mon prints de indmin de donne la serie des dix chiffre, mais toujours dans l'ordre du depart.
En tout cas je cherche mais??
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
6 déc. 2009 à 22:50
int j,indmin,q;
int tab;
for(i=0;i<10;i++)
{ indmin=tab_de[i];
printf("%d",indmin);
for(j=i+1;j<10;j++)
indmin=j;
printf("%d",j);
if(tab[j]<tab_de[i])

q=tab_de[i];
tab[i]=tab[indmin];
tab[indmin]=q;
printf("%d",q); 50 C:\Documents and Settings\Claude\Mes documents\fou.c subscripted value is neither array nor pointer
53 C:\Documents and Settings\Claude\Mes documents\fou.c subscripted value is neither array nor pointer

53 C:\Documents and Settings\Claude\Mes documents\fou.c subscripted value is neither array nor pointer
54 C:\Documents and Settings\Claude\Mes documents\fou.c subscripted value is neither array nor pointer
0
Le concombre engoncé
7 déc. 2009 à 00:24
le but de la programmation n'est pas de faire des modifications au hasard mais de réfléchir aux modifications à apporter
0
Le concombre engoncé
6 déc. 2009 à 23:11
Le but du code qui t'a été donné était de parcourir ton tableau 10 fois (même si seules 9 sont utiles)
et pour chacun de ces 10 parcours de trouver l'indice de la cellule de la plus basse valeur parmi les cellules au-dessus (ou après) la cellule de base !

retour en arriere => un peu d'algorithmique : trier un tableau de n éléments (similaire à tab_de[]), les éléments étant numérotés de indice_début à indice_fin (0 et 9 dans ton cas)
pour i variant entre indice_debut et indice_fin - 1
nous allons passer en revue toutes les cellules sauf la dernière
    indice_du_plus__petit <- i
    valeur_du_plus_petit <- tableau[i]
    car pour l'instant, le plus petit c'est tab_de[i]
    pour j variant entre i et indice_fin
    j va parcourir les cellules après tab_de[i]
        si tableau[j] < valeur_du_plus_petit alors
            indice_du_plus_petit <- j
            valeur_du_plus_petit <- tableau[j]
            nous venons de trouver un tab_de[j] plus petit,
            notons sa valeur et son indice
        fin si
    fin pour j
    on a fini de parcourir les cellules après tab_de[i],
    on a trouvé le plus petit en indice_du_plus_petit
    temp <- tableau[i]
    mémoriser la valeur "trop grande", celle de tab_de[i]
    tableau[i] <- tableau[indice_du_plus_petit]
    mettre dans tab_de[i] la plus petite valeur trouvée
    tableau[indice_du_plus_petit] <- temp
    ranger la valeur trop grande dans celle où se trouvait la plus petite
fin pour i
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
10 déc. 2009 à 02:04
J'ai utiliser une fonction ou plutvoid trier(int tableau[],int nbElem)

{ int i,j,indMin;
int tempo;
for (i=0;i<nbElem-1;i++)
{ indMin=i;
for(j=i+1;j<nbElem;j++)
if (tableau[j]<tableau[indMin])
indMin=j;
if(indMin!=i){
tempo=tableau[i];
tableau[i]=tableau[indMin];
tableau[indMin]=tempo;
}
}

}
ot essayé avec une fonction, mais le compilateur me renvoit une erreur de syntax
trier(int tab_de[i],nbElem); a la demande de la fonction
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
10 déc. 2009 à 02:18
Si on se demande pourquoi j'assaye avec une fonction c'est une contrainte du travaille.
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
10 déc. 2009 à 06:02
Si on effctuer mon programme on obtient
Jouer une partie et lancer le de 10 fois
face obtenu

face obtenu

face obtenu

face obtenu

face obtenu

face obtenu

face obtenu

face obtenu

face obtenu

face obtenu
Le resultat en ordre 4011880
Nombre de face 2| 6 | 6 | 5 | 1 | 4 | 2 | 3 | 3 | 6 | 1 |
Nombre de face 2
Les nombres au positions 3 et 8 sont: 5 3 :
Voulez-vous jouer une autre partie ? (o/n)
Le problème est dans le resultat en ordre 4011880---ou prend t-il ces nombres
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
11 déc. 2009 à 08:02
Je ne comprends pas pourquoi ma fontion de tri donne un mauvais resutltat, je ne suis pas pour mettre tab_de dans ma fonction?
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
11 déc. 2009 à 16:45
S.V.P
0
Le concombre de Schrödinger
11 déc. 2009 à 18:56
Hello.

Si le compilateur t'annonce une erreur de syntaxe à l'appel, c'est donc que pour lui l'erreur ne se trouve pas dans la fonction (sinon, il t'aurait annoncé "erreur dans la fonction")

quand tu fait des printf, fais-tu plutôt
printf("tirage de %d\n", tab_de[i]);
ou plutôt
printf("tirage de %d\n", int tab_de[i]);

dès que tu auras répondu à cette question, tu comprendras pourquoi le compilateur rouspète
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
12 déc. 2009 à 01:08
C'est là ma question, ce qui est plus haut, elle une ancienne version. La correction de la position du int a été faite. Ce qui m'embête c'est que le compilateur ne me cause plus de problème pour l'instant. Ce n'est plus un problème de syntaxe.
0
Le concombre de Schrödinger
12 déc. 2009 à 10:31
M'enfin !
en conclusion de ton post 43, tu dis que le compilateur râle sur
trier(int tab_de[i],nbElem); a la demande de la fonction
Tu vois bien un int juste après trier( ?!
0
Moustiquet Messages postés 212 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 27 juin 2011
12 déc. 2009 à 17:30
Je sais que tu n'aime pas la répétition, mais je t'envois une copie de mon travail depuis les derniers changement avec une execution:/*Programme en C permettant de jouer une partie de des 
d'afficher des informations sur le deroulement de la partie.
A la fin de la partie il faut:
     1)afficher les faces obtenus a chaque lancer du dé
     2)Le nombre de des avec la face tiré 2
     3)Le nombre de dés avec la face tireé 5
     4)afficher dans le tableau des ayant la valeur 1 comme face tirée
     5)afficher les positions dans le tableau des ayant la valeur 6 comme face tirée
     6)La face tirée par le dé se trouvant a la position 3 et la position 8 du tableau
     9)Le tableau des trié en ordre croissant du dé.*/
     
#include <stdio.h> 
#include<stdlib.h> 
#include<time.h> 
void trier(int tableau[],int nbElem)

{ int i,j,indMin;
int temp;
for (i=0;i<nbElem-1;i++)
{  indMin=i;
for(j=i+1;j<nbElem;j++)
if (tableau[j]<tableau[indMin])
indMin=j;
if(indMin!=i){
temp=tableau[i];
tableau[i]=tableau[indMin];
tableau[indMin]=temp;
}
}

}

int main()

{
    
int i,j;
char reponse;






int tab_de[10];
int nbElem;

do{ printf("Jouer une partie et lancer le de 10 fois");
printf("\n");
srand(time(NULL)); 
for(i=0;i<10;i++){
tab_de[i]= 1+ (int) (rand()%6);
printf("tirage de %d\n", tab_de[i]);
}

printf("Le resultat en ordre %d",tab_de[i]);
printf("\n");

/*pour l'afficher*/
printf("|");
for( i=0;i<10;i++){
printf("  %d  |",tab_de[i]);}
printf("\n");
trier;  (tab_de[i],nbElem);

printf("resultat en ordre croissant est:%d",nbElem);



printf("\n");
printf("Les nombres au positions 3 et 8 sont: %d %d :",tab_de[2],tab_de[7]);
  printf("\nVoulez-vous jouer une autre partie ? (o/n) "); 
         fflush(stdin); 
         reponse = toupper ( getchar() );
       }  while(reponse== 'O'||reponse=='o');
printf("\n");
 
 getch();

return(EXIT_SUCCESS);


}
Execution:
Jouer une partie et lancer le de 10 fois
tirage de 1
tirage de 4
tirage de 5
tirage de 1
tirage de 4
tirage de 5
tirage de 3
tirage de 4
tirage de 6
tirage de 1
Le resultat en ordre 4011880
| 1 | 4 | 5 | 1 | 4 | 5 | 3 | 4 | 6 | 1 |
resultat en ordre croissant est:-1
Les nombres au positions 3 et 8 sont: 5 4 :
Voulez-vous jouer une autre partie ? (o/n)
0