Erreur programmation en C d'un mastermind
nicky973
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
nicky973 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
nicky973 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois programmer un mastermind ors j'ai une erreur de segmentation lors de l'execution si vous pouviez m'aider.
Voila le code sources:
// Nicolas Alonzeau Mastermind test v1.0
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define NombreCouleurs
#define NombrePionts 4
#define COUPS 12
//variable globale
int i;
int plateau[COUPS];
int c[];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct{
int combinaison[NombrePionts];
int bonne_pos;
int mauvaise_pos;
}Rangee;
int init_alea(int c[]);
int analyse(Rangee *jeu, int reef[]);
/*void affiche_historique(Rangeelignes[], int NombreCouleurs);*/
int main(void){
srand(time(NULL));
int switch_case, saisie;//Variable utilisée pour le switch case
int reference[NombrePionts];
do{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case) {// Switch case cas 3 fin du programme cas 2 afficher les régles du jeu cas 1 jouer!
case 3 : break;
case 2 : printf("regle du jeu a ajouter");//régle du jeu
break;
case 1 : init_alea(reference[NombrePionts]);
for(i=0;i<=(NombrePionts-1);i++)
{
printf("%d",reference[i]); // use for debug
}
default: break; }// Fin du switch case
}while(switch_case==1||switch_case==2);
return 0;}
int init_alea(int c[]){
{
int i;
for(i=0;i<NombrePionts;i++) // Pour chaque pion
{
c[i]=rand()%8+1; // On choisis aléatoirement une valeur entre 1 et 8
}
/*
for(i=0;i<=NombrePionts-1;i++)
{
printf("%d ",tab[i]); // Cette partie affiche la combinaison. Utilisée lors du debug du programme
}
*/
}
}
et ce que le debugger DDD m'affiche :
http://www.hostingpics.net/viewer.php?id=107284erreur_mastermind_ddd.png
Malgré l'aide de DD je ne trouve pas. Merci d'avance
Je dois programmer un mastermind ors j'ai une erreur de segmentation lors de l'execution si vous pouviez m'aider.
Voila le code sources:
// Nicolas Alonzeau Mastermind test v1.0
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define NombreCouleurs
#define NombrePionts 4
#define COUPS 12
//variable globale
int i;
int plateau[COUPS];
int c[];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct{
int combinaison[NombrePionts];
int bonne_pos;
int mauvaise_pos;
}Rangee;
int init_alea(int c[]);
int analyse(Rangee *jeu, int reef[]);
/*void affiche_historique(Rangeelignes[], int NombreCouleurs);*/
int main(void){
srand(time(NULL));
int switch_case, saisie;//Variable utilisée pour le switch case
int reference[NombrePionts];
do{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case) {// Switch case cas 3 fin du programme cas 2 afficher les régles du jeu cas 1 jouer!
case 3 : break;
case 2 : printf("regle du jeu a ajouter");//régle du jeu
break;
case 1 : init_alea(reference[NombrePionts]);
for(i=0;i<=(NombrePionts-1);i++)
{
printf("%d",reference[i]); // use for debug
}
default: break; }// Fin du switch case
}while(switch_case==1||switch_case==2);
return 0;}
int init_alea(int c[]){
{
int i;
for(i=0;i<NombrePionts;i++) // Pour chaque pion
{
c[i]=rand()%8+1; // On choisis aléatoirement une valeur entre 1 et 8
}
/*
for(i=0;i<=NombrePionts-1;i++)
{
printf("%d ",tab[i]); // Cette partie affiche la combinaison. Utilisée lors du debug du programme
}
*/
}
}
et ce que le debugger DDD m'affiche :
http://www.hostingpics.net/viewer.php?id=107284erreur_mastermind_ddd.png
Malgré l'aide de DD je ne trouve pas. Merci d'avance
A voir également:
- Erreur programmation en C d'un mastermind
- Application de programmation - Guide
- Mettre en veille un programme - Guide
- Erreur 0x80070643 - Accueil - Windows
- Programmer un sms - Guide
- J'aime par erreur facebook notification - Forum Facebook
9 réponses
hello
d'un rapide coup d'oeil, je vois
int c[];
et
c[i]=rand()%8....
ne manque-t-il pas de la mémoire pour c ?
d'un rapide coup d'oeil, je vois
int c[];
et
c[i]=rand()%8....
ne manque-t-il pas de la mémoire pour c ?
Salut,
il faut que tu définisses la taille de ton tableau c[]
tu utilises time mais tu ne déclares pas time.h .Ta fonction init_alea est censé renvoyée un entier mais elle renvoit rien. Si tu affectes directement la variable dans ton tableau où est l'intérêt de renvoyer quelque chose ? Si tu veux passer quelque chose pour l'affecter fais-le avec des pointeurs dans ton init_alea.
il faut que tu définisses la taille de ton tableau c[]
tu utilises time mais tu ne déclares pas time.h .Ta fonction init_alea est censé renvoyée un entier mais elle renvoit rien. Si tu affectes directement la variable dans ton tableau où est l'intérêt de renvoyer quelque chose ? Si tu veux passer quelque chose pour l'affecter fais-le avec des pointeurs dans ton init_alea.
Merci j'ai bien corrigé le probléme de la taille du tableau et la fonction ne renvoie plus rien.
Il persiste quand même une erreur de segmentation. Et un avertissement du debbuger que je ne comprend pas.
voila le code source;
// Nicolas Alonzeau Mastermind test v1.0
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <time.h>
#define NombreCouleurs
#define NombrePionts 4
#define COUPS 12
#define MAX 50
//variable globale
int i;
int plateau[COUPS];
int c[MAX];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct{
int combinaison[NombrePionts];
int bonne_pos;
int mauvaise_pos;
}Rangee;
void init_alea(int c[]);
int analyse(Rangee *jeu, int reef[]);
/*void affiche_historique(Rangeelignes[], int NombreCouleurs);*/
int main(void){
srand(time(NULL));
int switch_case, saisie;//Variable utilisée pour le switch case
int reference[NombrePionts];
do{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case) {// Switch case cas 3 fin du programme cas 2 afficher les régles du jeu cas 1 jouer!
case 3 : break;
case 2 : printf("regle du jeu a ajouter");//régle du jeu
break;
case 1 : init_alea(reference[NombrePionts]);
for(i=0;i<=(NombrePionts-1);i++)
{
printf("%d",reference[i]); // use for debug
}
default: break; }// Fin du switch case
}while(switch_case==1||switch_case==2);
return 0;}
void init_alea(int c[]){
{
int j;
for(j=0;j<NombrePionts;j++) // Pour chaque pion
{
c[j]=rand()%8+1; // On choisis aléatoirement une valeur entre 1 et 8
}
/*
for(i=0;i<=NombrePionts-1;i++)
{
printf("%d ",tab[i]); // Cette partie affiche la combinaison. Utilisée lors du debug du programme
}
*/
}
}
l'avertissement du compilateur est :
testv1.0.c:46: attention : passing argument 1 of ‘init_alea’ makes pointer from integer without a cast
quand a ddd il m'affiche toujours l'erreur au même endroit:
http://www.hostingpics.net/viewer.php?id=326432erreur_mastermind2.png
Il persiste quand même une erreur de segmentation. Et un avertissement du debbuger que je ne comprend pas.
voila le code source;
// Nicolas Alonzeau Mastermind test v1.0
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <time.h>
#define NombreCouleurs
#define NombrePionts 4
#define COUPS 12
#define MAX 50
//variable globale
int i;
int plateau[COUPS];
int c[MAX];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct{
int combinaison[NombrePionts];
int bonne_pos;
int mauvaise_pos;
}Rangee;
void init_alea(int c[]);
int analyse(Rangee *jeu, int reef[]);
/*void affiche_historique(Rangeelignes[], int NombreCouleurs);*/
int main(void){
srand(time(NULL));
int switch_case, saisie;//Variable utilisée pour le switch case
int reference[NombrePionts];
do{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case) {// Switch case cas 3 fin du programme cas 2 afficher les régles du jeu cas 1 jouer!
case 3 : break;
case 2 : printf("regle du jeu a ajouter");//régle du jeu
break;
case 1 : init_alea(reference[NombrePionts]);
for(i=0;i<=(NombrePionts-1);i++)
{
printf("%d",reference[i]); // use for debug
}
default: break; }// Fin du switch case
}while(switch_case==1||switch_case==2);
return 0;}
void init_alea(int c[]){
{
int j;
for(j=0;j<NombrePionts;j++) // Pour chaque pion
{
c[j]=rand()%8+1; // On choisis aléatoirement une valeur entre 1 et 8
}
/*
for(i=0;i<=NombrePionts-1;i++)
{
printf("%d ",tab[i]); // Cette partie affiche la combinaison. Utilisée lors du debug du programme
}
*/
}
}
l'avertissement du compilateur est :
testv1.0.c:46: attention : passing argument 1 of ‘init_alea’ makes pointer from integer without a cast
quand a ddd il m'affiche toujours l'erreur au même endroit:
http://www.hostingpics.net/viewer.php?id=326432erreur_mastermind2.png
Merci j'ai bien corrigé le probléme de la taille du tableau et la fonction ne renvoie plus rien.
Il persiste quand même une erreur de segmentation. Et un avertissement du debbuger que je ne comprend pas.
voila le code source;
// Nicolas Alonzeau Mastermind test v1.0
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <time.h>
#define NombreCouleurs
#define NombrePionts 4
#define COUPS 12
#define MAX 50
//variable globale
int i;
int plateau[COUPS];
int c[MAX];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct{
int combinaison[NombrePionts];
int bonne_pos;
int mauvaise_pos;
}Rangee;
void init_alea(int c[]);
int analyse(Rangee *jeu, int reef[]);
/*void affiche_historique(Rangeelignes[], int NombreCouleurs);*/
int main(void){
srand(time(NULL));
int switch_case, saisie;//Variable utilisée pour le switch case
int reference[NombrePionts];
do{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case) {// Switch case cas 3 fin du programme cas 2 afficher les régles du jeu cas 1 jouer!
case 3 : break;
case 2 : printf("regle du jeu a ajouter");//régle du jeu
break;
case 1 : init_alea(reference[NombrePionts]);
for(i=0;i<=(NombrePionts-1);i++)
{
printf("%d",reference[i]); // use for debug
}
default: break; }// Fin du switch case
}while(switch_case==1||switch_case==2);
return 0;}
void init_alea(int c[]){
{
int j;
for(j=0;j<NombrePionts;j++) // Pour chaque pion
{
c[j]=rand()%8+1; // On choisis aléatoirement une valeur entre 1 et 8
}
/*
for(i=0;i<=NombrePionts-1;i++)
{
printf("%d ",tab[i]); // Cette partie affiche la combinaison. Utilisée lors du debug du programme
}
*/
}
}
l'avertissement du compilateur est :
testv1.0.c:46: attention : passing argument 1 of ‘init_alea’ makes pointer from integer without a cast
quand a ddd il m'affiche toujours l'erreur au même endroit:
http://www.hostingpics.net/viewer.php?id=326432erreur_mastermind2.png
Il persiste quand même une erreur de segmentation. Et un avertissement du debbuger que je ne comprend pas.
voila le code source;
// Nicolas Alonzeau Mastermind test v1.0
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <time.h>
#define NombreCouleurs
#define NombrePionts 4
#define COUPS 12
#define MAX 50
//variable globale
int i;
int plateau[COUPS];
int c[MAX];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct{
int combinaison[NombrePionts];
int bonne_pos;
int mauvaise_pos;
}Rangee;
void init_alea(int c[]);
int analyse(Rangee *jeu, int reef[]);
/*void affiche_historique(Rangeelignes[], int NombreCouleurs);*/
int main(void){
srand(time(NULL));
int switch_case, saisie;//Variable utilisée pour le switch case
int reference[NombrePionts];
do{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case) {// Switch case cas 3 fin du programme cas 2 afficher les régles du jeu cas 1 jouer!
case 3 : break;
case 2 : printf("regle du jeu a ajouter");//régle du jeu
break;
case 1 : init_alea(reference[NombrePionts]);
for(i=0;i<=(NombrePionts-1);i++)
{
printf("%d",reference[i]); // use for debug
}
default: break; }// Fin du switch case
}while(switch_case==1||switch_case==2);
return 0;}
void init_alea(int c[]){
{
int j;
for(j=0;j<NombrePionts;j++) // Pour chaque pion
{
c[j]=rand()%8+1; // On choisis aléatoirement une valeur entre 1 et 8
}
/*
for(i=0;i<=NombrePionts-1;i++)
{
printf("%d ",tab[i]); // Cette partie affiche la combinaison. Utilisée lors du debug du programme
}
*/
}
}
l'avertissement du compilateur est :
testv1.0.c:46: attention : passing argument 1 of ‘init_alea’ makes pointer from integer without a cast
quand a ddd il m'affiche toujours l'erreur au même endroit:
http://www.hostingpics.net/viewer.php?id=326432erreur_mastermind2.png
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ouais je te dis il faut que tu renseignes un pointeur tu crée une copie de la variable en faisant comme ça tu ne renseignes pas le champ générique j'ai zieuté vite fais donc à voir par rapport à un autre avis et je ne sais pas si ça marche dans l'idée de ce que tu veux faire
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define NombreCouleurs
#define NombrePions 4
#define COUPS 12
//variable globale
int i;
int plateau[COUPS];
int c[20];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct
{
int combinaison[NombrePions];
int bonne_pos;
int mauvaise_pos;
}Rangee;
void init_alea(int *c);
int analyse(Rangee *jeu, int reef[]);
int main(void){
srand(time(NULL));
int switch_case;
int reference[NombrePions];
do
{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case)
{
case 3 : break;
case 2 : printf("regle du jeu a ajouter");
break;
case 1 : init_alea(&reference[NombrePions]);
for(i=0;i<=(NombrePions-1);i++)
{
printf("%d",reference[i]);
}
default: break;
}
}
while(switch_case==1||switch_case==2);
return 0;
}
void init_alea(int *c)
{
int i;
for(i=0;i<NombrePions;i++) // Pour chaque pion
{
*c=rand()%8+1; // On choisis aléatoirement une valeur entre 1 et 8
}
for(i=0;i<=NombrePions-1;i++)
{
printf("%d ",tab[i]); // Cette partie affiche la combinaison. Utilisée lors du debug du programme
}
}
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define NombreCouleurs
#define NombrePions 4
#define COUPS 12
//variable globale
int i;
int plateau[COUPS];
int c[20];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct
{
int combinaison[NombrePions];
int bonne_pos;
int mauvaise_pos;
}Rangee;
void init_alea(int *c);
int analyse(Rangee *jeu, int reef[]);
int main(void){
srand(time(NULL));
int switch_case;
int reference[NombrePions];
do
{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case)
{
case 3 : break;
case 2 : printf("regle du jeu a ajouter");
break;
case 1 : init_alea(&reference[NombrePions]);
for(i=0;i<=(NombrePions-1);i++)
{
printf("%d",reference[i]);
}
default: break;
}
}
while(switch_case==1||switch_case==2);
return 0;
}
void init_alea(int *c)
{
int i;
for(i=0;i<NombrePions;i++) // Pour chaque pion
{
*c=rand()%8+1; // On choisis aléatoirement une valeur entre 1 et 8
}
for(i=0;i<=NombrePions-1;i++)
{
printf("%d ",tab[i]); // Cette partie affiche la combinaison. Utilisée lors du debug du programme
}
}
Yes ok merci beaucoup ça marche. enfin non ça n'a plus d'erreur de segmentation. Ba je vais essayer de le finir.
Juste un truc rand balance a chaque fois la même suite tu saurais pas pourquoi?
Juste un truc rand balance a chaque fois la même suite tu saurais pas pourquoi?
Re, on me demande donc je fais en vitesse désolé :
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define NombreCouleurs
#define NombrePions 4
#define COUPS 12
//variable globale
int i;
int plateau[COUPS];
int c[20];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct
{
int combinaison[NombrePions];
int bonne_pos;
int mauvaise_pos;
}Rangee;
void init_alea(int *c);
int analyse(Rangee *jeu, int reef[]);
int main(void){
srand(time(NULL));
int switch_case;
int reference[NombrePions];
do
{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case)
{
case 3 : break;
case 2 : printf("regle du jeu a ajouter");
break;
case 1 :
for(i = 0; i <= (NombrePions-1);i++)
{
init_alea(reference+i);
}
for(i=0;i<=(NombrePions-1);i++)
{
printf("%d\n",reference[i]);
}
default: break;
}
}
while(switch_case==1||switch_case==2);
return 0;
}
void init_alea(int *c)
{
*c = rand()%8+1;
}
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define NombreCouleurs
#define NombrePions 4
#define COUPS 12
//variable globale
int i;
int plateau[COUPS];
int c[20];
//srtuct !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef struct
{
int combinaison[NombrePions];
int bonne_pos;
int mauvaise_pos;
}Rangee;
void init_alea(int *c);
int analyse(Rangee *jeu, int reef[]);
int main(void){
srand(time(NULL));
int switch_case;
int reference[NombrePions];
do
{
printf("Bonjour vous avez ouvert le mindmaster que voulez vous faire?");
printf("Tapez :\n 1:Jouer \n 2: Régle du jeu \n 3:Quitter\n");
scanf("%d", &switch_case);
switch (switch_case)
{
case 3 : break;
case 2 : printf("regle du jeu a ajouter");
break;
case 1 :
for(i = 0; i <= (NombrePions-1);i++)
{
init_alea(reference+i);
}
for(i=0;i<=(NombrePions-1);i++)
{
printf("%d\n",reference[i]);
}
default: break;
}
}
while(switch_case==1||switch_case==2);
return 0;
}
void init_alea(int *c)
{
*c = rand()%8+1;
}