Pouvez-vous me vérifier ce programme ??

Fermé
walidmz Messages postés 7 Date d'inscription lundi 4 mai 2015 Statut Membre Dernière intervention 3 mars 2017 - Modifié par mamiemando le 5/05/2015 à 10:15
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 - 7 mai 2015 à 10:16



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

int main()
{
int m[6][7], i = 1, nb = 0, j;
srand(10);

for (j = 0; j <= 6; j++)
m[0][j] = rand() % 10;
while ((i < 6) && (nb < 7)) {
printf("entrez sept numéro s.v.p");
printf("\n");
for (j = 0; j <= 6; j++)
scanf("%d", m[i][j]);
for (j = 0; j <= 6; j++)
if (m[i][j] == m[0][j]) {
printf("A");
nb=nb+1;
} else
if (nb == 7) {
printf("vous avez gagné");
} else
printf("vous avez perdu");
}
}
A voir également:

2 réponses

mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
5 mai 2015 à 10:23
Bonjour,

Cher Walid je pense que la moindre des choses serait :
1) de commencer ton message par bonjour
2) de copier coller un code indenté la prochaine fois
3) de finir ton message par un "merci d'avance"

Ensuite non ton programme est faux :

(mando@velvet) (~) $ ./a.out 
entrez sept numéro s.v.p
1234
Erreur de segmentation


Ton scanf est faux, si tu prends le temps de lire la documentation, tu verras que c'est l'adresse de ton entier qu'il faut passer en paramètre (donc &m[i][j]). C'est une erreur que tu aurais pu voir si tu avais pris le temps de compiler :

(mando@velvet) (~) $ gcc -W -Wall plop.c 
plop.c: In function `main':
plop.c:17:13: warning: format `%d' expects argument of type `int *', but argument 2 has type `int' [-Wformat=]
scanf("%d", m[i][j]);
^
plop.c:28:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^


On voit d'ailleurs que ton main ne retourne pas l'entier qu'il est sensé retourner (0 si tout va bien, une autre valeur sinon).

Ensuite en terme de conception beaucoup de choses ne vont pas :

- il est inutile de tout mémoriser (donc inutile d'avoir une matrice), seul l'essai courant est pertinent (donc un vecteur est suffisant)

- idéalement on devrait pouvoir paramétrer au lancement du programme les différentes constantes (nombre d'essai, nombre de chiffres à deviner, etc...) mais ceci nécessite de savoir faire une allocation dynamique avec malloc et free (oublie cette remarque si tu ne les as pas vu en cours).

- ensuite on voit tout de suite que le programme ne répond pas au problème car la seule chose qu'il est capable de retourner ce sont des "A" (si c'est correct), or vu que ton exercice semble très proche d'un mastermind, il devrait renvoyer pour chaque boule si elle est bonne, mal placée ou fausse. La seule chose qu'on peut s'attendre à voir c'est par exemple "AAA" si 3 des 7 chiffres sont bons sans savoir lesquels seront corrects. Ça ne répond donc pas à l'exercice.

Bonne chance
0
je vous remercie pour vos conseils, j'ai beaucoup bénéficié de votre part .
0
A chaque fois je compile, je reçoit ce message "code blocks a cessé de fonctionner"
c'est pourquoi j'ai demandé une vérification
0
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
7 mai 2015 à 10:16
A chaque fois je compile, je reçoit ce message "code blocks a cessé de fonctionner" c'est pourquoi j'ai demandé une vérification

Cette erreur n'est pas normale (et sans doute due à une mauvaise installation de code::blocks), normalement le compilateur est sensé te renvoyer des messages d'erreur, mais code::blocks n'est pas sensé planter à cause de ça.

Si ton problème persiste réinstalle code::blocks ou un autre IDE. Ou tu peux aussi utiliser unetbootin pour avoir un linux (par exemple ubuntu ou kubuntu) sur clé usb, et travailler sur cette clé usb.
http://doc.ubuntu-fr.org/unetbootin

Il faudra juste veiller à installer un IDE via la logithèque ubuntu, par exemple anjuta ou kdevelop.
http://doc.ubuntu-fr.org/anjuta
http://doc.ubuntu-fr.org/kdevelop

Bonne chance
0