Erreur programmation en C d'un mastermind
Fermé
nicky973
Messages postés
5
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
30 décembre 2009
-
29 déc. 2009 à 13:19
nicky973 Messages postés 5 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 30 décembre 2009 - 30 déc. 2009 à 08:50
nicky973 Messages postés 5 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 30 décembre 2009 - 30 déc. 2009 à 08:50
A voir également:
- Erreur programmation en C d'un mastermind
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Application de programmation - Guide
- Erreur 1001 outlook - Accueil - Bureautique
9 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
29 déc. 2009 à 13:33
29 déc. 2009 à 13:33
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 ?
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
29 déc. 2009 à 17:13
29 déc. 2009 à 17:13
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.
nicky973
Messages postés
5
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
30 décembre 2009
29 déc. 2009 à 19:25
29 déc. 2009 à 19:25
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
nicky973
Messages postés
5
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
30 décembre 2009
29 déc. 2009 à 19:25
29 déc. 2009 à 19:25
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
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
29 déc. 2009 à 20:54
29 déc. 2009 à 20:54
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
}
}
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
29 déc. 2009 à 20:57
29 déc. 2009 à 20:57
Y'a sans doute des erreurs mais bon
nicky973
Messages postés
5
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
30 décembre 2009
29 déc. 2009 à 22:58
29 déc. 2009 à 22:58
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?
miramaze
Messages postés
1429
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
1 mai 2022
92
30 déc. 2009 à 02:56
30 déc. 2009 à 02:56
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;
}
nicky973
Messages postés
5
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
30 décembre 2009
30 déc. 2009 à 08:50
30 déc. 2009 à 08:50
Merci beaucoup ça fonctionne. Je continue a taffer dessus