Fonction en C
Fermé
Marie032
-
12 mai 2008 à 00:04
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 18 mai 2008 à 20:02
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 18 mai 2008 à 20:02
A voir également:
- Fonction en C
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Snapchat ils m'ont ajouté par la fonction recherche - Forum Snapchat
- Fonction filtre excel n'existe pas - Forum Excel
4 réponses
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
12 mai 2008 à 00:16
12 mai 2008 à 00:16
Bonsoir,
Peux-tu expliciter ta structure (ou ton type défini) Grille s'il te plait?
J'aimerais notamment connaître le nombre de colonnes de ta grille (c'est pratique pour faire une boucle ;).
Merci
Peux-tu expliciter ta structure (ou ton type défini) Grille s'il te plait?
J'aimerais notamment connaître le nombre de colonnes de ta grille (c'est pratique pour faire une boucle ;).
Merci
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
12 mai 2008 à 00:39
12 mai 2008 à 00:39
tu fais une boucle for pour parcourir la ligne quand la valeur de val est égale a la valeur de la case dans laquelle tu te trouves tu renvoies la valeur de l'indice qui te permet de parcourir la ligne
bonne chance ;)
bonne chance ;)
Exact j'ai oublié de préciser que cété une grille de sudoku
j'ai pensé à
int cherchecandidatcacheligne ( grille g , int ligne , int val ) {
while ( j< 9 ) {
if grille [ligne][j] == val
return (j)
j++
}
return -1
}
par contre j'ai du mal à faire cette fonction :
Ecrire la fonction int candidatsCachesLigne(Grille g) qui trouve et note les candidats cachés sur les lignes
puis retourne le nombre de candidat cachés notés.
j'avais pensé a faire une boucle avec un compteur mais je sais pas sais comment faire pour savoir si le candidats est caché ( c'est à dire qu'il n'est pas dans la grille de sudoku initial )
merci d'avance pour vos réponse ( et pour ceux qui m'ont répondu avant )
j'ai pensé à
int cherchecandidatcacheligne ( grille g , int ligne , int val ) {
while ( j< 9 ) {
if grille [ligne][j] == val
return (j)
j++
}
return -1
}
par contre j'ai du mal à faire cette fonction :
Ecrire la fonction int candidatsCachesLigne(Grille g) qui trouve et note les candidats cachés sur les lignes
puis retourne le nombre de candidat cachés notés.
j'avais pensé a faire une boucle avec un compteur mais je sais pas sais comment faire pour savoir si le candidats est caché ( c'est à dire qu'il n'est pas dans la grille de sudoku initial )
merci d'avance pour vos réponse ( et pour ceux qui m'ont répondu avant )
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
>
Marie032
12 mai 2008 à 21:22
12 mai 2008 à 21:22
Bonjour,
Pour ton code, tu y es presque ! Quelques commentaires toutefois:
- ici une boucle for est préférable car tu connais exactement le nombre d'itérations maximales (mais bon, un while fonctionnera aussi, c'est un détail :)
- ta variable j doit être initialisée et déclarée
- enfin, si ton nombre de lignes et de colonnes de ta grille est fixe, il est préférable d'utiliser un #define plutôt que la valeur directement dans le code (non seulement tu auras un gain à l'exécution, et en plus tu pourras modifier beaucoup plus facilement ton programme si un jour tu dois modifier ces variables).
Je te propose donc le code suivant:
J'ai tapé ce code à l'arrache sans le tester donc il ne compile peut-être pas, mais l'idée est là ;)
Pour ton code, tu y es presque ! Quelques commentaires toutefois:
- ici une boucle for est préférable car tu connais exactement le nombre d'itérations maximales (mais bon, un while fonctionnera aussi, c'est un détail :)
- ta variable j doit être initialisée et déclarée
- enfin, si ton nombre de lignes et de colonnes de ta grille est fixe, il est préférable d'utiliser un #define plutôt que la valeur directement dans le code (non seulement tu auras un gain à l'exécution, et en plus tu pourras modifier beaucoup plus facilement ton programme si un jour tu dois modifier ces variables).
Je te propose donc le code suivant:
#define NB_COLONNES 9 #define NB_LIGNES 9 int cherchecandidatcacheligne ( grille g , int ligne , int val ) { for( int colonne_courante=0; colonne_courante<NB_COLONNES; colonne_courante++) { if (grille[ligne][colonne_courante] == val) return colonne_courante; } return -1; }
J'ai tapé ce code à l'arrache sans le tester donc il ne compile peut-être pas, mais l'idée est là ;)
ok merci marco
sinon j'avias une autre fonctino à écrrie
Ecrire la fonction int candidatsCachesLigne(Grille g) qui trouve et note les candidats cachés sur les lignes
puis retourne le nombre de candidat cachés notés.
je sais pas trop comment l'écrire , quelqun a une idée ? c'est toujorus un sudoku et les canddiats caché sont les candidats qui n'aparaisse pas dnas la grille initiale ( le sudoku quand il est pas remplei quoi )
sinon j'avias une autre fonctino à écrrie
Ecrire la fonction int candidatsCachesLigne(Grille g) qui trouve et note les candidats cachés sur les lignes
puis retourne le nombre de candidat cachés notés.
je sais pas trop comment l'écrire , quelqun a une idée ? c'est toujorus un sudoku et les canddiats caché sont les candidats qui n'aparaisse pas dnas la grille initiale ( le sudoku quand il est pas remplei quoi )
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
13 mai 2008 à 20:13
13 mai 2008 à 20:13
Bonsoir,
Qu'entends tu par "la fonction note les candidats cachés sur les lignes" ?
Comment notes-tu les candidats ?
Qu'entends tu par "la fonction note les candidats cachés sur les lignes" ?
Comment notes-tu les candidats ?
Je pense qu'il faut retourner les candidats cachés ( c'est à dire qui n'apparaisse pas dans la grille iniale
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
13 mai 2008 à 20:55
13 mai 2008 à 20:55
Ta question n'est vraiment pas claire.
Que doit exactement faire ta fonction : retourner le nombre de candidats cachés de ta grille, ou retourner la liste des candidats cachés?
Connais-tu la valeur des candidats cachés ou est-ce qu'au final le but de ton exercice est de les trouver? (d'après ta question initiale, je pense que tu ne les connais pas vu qu'on faisait un test si val==null).
Que doit exactement faire ta fonction : retourner le nombre de candidats cachés de ta grille, ou retourner la liste des candidats cachés?
Connais-tu la valeur des candidats cachés ou est-ce qu'au final le but de ton exercice est de les trouver? (d'après ta question initiale, je pense que tu ne les connais pas vu qu'on faisait un test si val==null).
Marie032
>
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
17 mai 2008 à 12:55
17 mai 2008 à 12:55
oui c'est de les trouver et de retourner le nombre de candidat caché
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
>
Marie032
18 mai 2008 à 20:02
18 mai 2008 à 20:02
Hello,
Toujours avec nos deux macros:
Comme tu peux le voir, je ne sais pas comment tu sais si un candidat est caché ou pas (ta structure grille est de type int** donc je ne sais pas comment tu stockes cette information). A toi de compléter la condition donc !
Toujours avec nos deux macros:
#define NB_COLONNES 9 #define NB_LIGNES 9 int candidatsCachesLigne(Grille g) { int compteur; for(int i=0; i<NB_LIGNES; i++) { for(int j=0; j<NB_COLONNES; j++) { if (/*ICI IL FAUT METTRE TA CONDITION QUI T'AFFIRME SI UN CANDIDAT EST CACHE OU PAS*/) compteur++; } } return compteur; }
Comme tu peux le voir, je ne sais pas comment tu sais si un candidat est caché ou pas (ta structure grille est de type int** donc je ne sais pas comment tu stockes cette information). A toi de compléter la condition donc !