echec de compilation avec fonction d'une instructio !!
14 réponses
andre barbaroux
Bosoir à tous,
Débutant en C, jeunot de 84 ans, je réussis à ne pas compiler une fonction
de une instruction, j'utilise le compilateur C (GNU) de codeblocks, ce Sp
est destiné à imprimer un tableau ligne à ligne . Le precompilateur
m'indique toujours:
line 25 error expected ')' 'before' '[' token Qur je ne comprend pas?
cette ligne est la declaration de la fonction
C'est pourquoi j'ai mis en commentaire toute la fonction et la même erreur
toujours.
Merci de regarder ;-)
int main()
{
int ligne;
int col;
ligne=2;
col=3;
int tableau[ligne][col];
/* Ceci est un sous-programme d'impression ligne à ligne d'un tableau.
Auquel on passe en parametre
le nom du tableau, le nombre de lignes, et de colonnesl*/
ligne 25: int imp_tablo(nbligne,nbcol,tablo[nbligne][nbcol])
line 25 error expected ')' 'before' '[' token Qur je ne comprend pas? cette ligne est la declaration de la fonction
ligne 25: int imp_tablo(nbligne,nbcol,tablo[nbligne][nbcol])
Ici, il manque le type de nbligne, nbcol, et tablo. Essaye avec la déclaration suivante en ligne 25:
int imp_tablo(int n, int m, int tablo[2][3]);
(note les constantes dans la déclaration du paramètre de type tableau. Pour faire plus propre il faudrait utiliser des #define)
Ensuite pour l'appel dans le main(), il te suffit d'utiliser tout simplement:
imp_tableau(ligne, col, tableau); // appel au sous-programme
Ca devrait mieux marcher je pense.
sam.
Lucas Levrel
Bonjour,
Le 23 juillet 2014, andre barbaroux a écrit :
Je veux depuis le main passer passer le bombre de lignes , de colonne et le nom du tableau, avec ou sans les crochets indiquant les tableau multi dimensionnel
Dans la fonction imp_tablo, veux-tu imprimer tout le tableau, ou seulement une cellule ? Note que la déclaration int tableau[8][8]; signifie « tableau est une table de 8×8 entiers », mais dans le reste du code, tableau[x][y] désigne la case (x,y) du tableau, un entier donc. Si tu passes ça à une fonction, il faut que la fonction prenne un entier (et non un tableau) comme argument.
J'ai ecrit un petit programme qui marche trés bien et qui montre le global, l'appel de fonction. #include <stdio.h> #include <stdlib.h> int short tableau[8][8]; int toto;
// programme principal
int main() { // sous-programme
tableau[0][0]=9; imp_tablo(toto); return 0; } // sous programme
Je ne comprens pas trop où tu veux en venir dans ce programme : à quoi sert de passer toto en argument puisqu'il est global ?
-- LL Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Bonjour,
Le 23 juillet 2014, andre barbaroux a écrit :
Je veux depuis le main passer passer le bombre de lignes , de colonne et
le nom du tableau, avec ou sans les crochets indiquant les tableau multi
dimensionnel
Dans la fonction imp_tablo, veux-tu imprimer tout le tableau, ou seulement
une cellule ? Note que la déclaration
int tableau[8][8];
signifie « tableau est une table de 8×8 entiers », mais dans le reste du
code,
tableau[x][y]
désigne la case (x,y) du tableau, un entier donc. Si tu passes ça à une
fonction, il faut que la fonction prenne un entier (et non un
tableau) comme argument.
J'ai ecrit un petit programme qui marche trés bien et qui montre le
global, l'appel de fonction.
#include <stdio.h>
#include <stdlib.h>
int short tableau[8][8];
int toto;
// programme principal
int main()
{
// sous-programme
tableau[0][0]=9;
imp_tablo(toto);
return 0;
}
// sous programme
Je veux depuis le main passer passer le bombre de lignes , de colonne et le nom du tableau, avec ou sans les crochets indiquant les tableau multi dimensionnel
Dans la fonction imp_tablo, veux-tu imprimer tout le tableau, ou seulement une cellule ? Note que la déclaration int tableau[8][8]; signifie « tableau est une table de 8×8 entiers », mais dans le reste du code, tableau[x][y] désigne la case (x,y) du tableau, un entier donc. Si tu passes ça à une fonction, il faut que la fonction prenne un entier (et non un tableau) comme argument.
J'ai ecrit un petit programme qui marche trés bien et qui montre le global, l'appel de fonction. #include <stdio.h> #include <stdlib.h> int short tableau[8][8]; int toto;
// programme principal
int main() { // sous-programme
tableau[0][0]=9; imp_tablo(toto); return 0; } // sous programme
Je ne comprens pas trop où tu veux en venir dans ce programme : à quoi sert de passer toto en argument puisqu'il est global ?
-- LL Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
andre barbaroux
Bon jour ça marche!! merci Je n'ai pas vu le lien entre la modif et le message sybillin du compilateur marquant: la déclarationen erreur.
error expected ')' 'before' '[' token Voila mon pg adhoc: Remarques: Il n'y a pas de controle ni à la compilation ni a l'execution des limites du tableau, sauf à se le programmer,. le "printf("%d", tablo[5][5]:;" imprime n'importe quoi mais aucune alerte. .......................................................................................................
#include <stdio.h> #include <stdlib.h>
int main() { int ligne=2; int col=3;; int tableau[ligne][col]; tableau[0][0]=1; tableau[0][1]=2;tableau[0][2]=3; tableau[1][0]=4;tableau[1][1]=5;tableau[1][2]=6; imp_tablo(ligne, col, tableau); // appel au sous-programme } //...............SSous_programme........... int imp_tablo(int n, int m, int tablo[n][m]) //declaration fonction { printf("%d",tablo[1][1]); }
"Samuel DEVULDER" <samuel-dot-devulder-at-laposte-dot-net> a écrit dans le message de news: 53d01315$0$2039$
Le 22/07/2014 18:48, andre barbaroux a écrit :
line 25 error expected ')' 'before' '[' token Qur je ne comprend pas? cette ligne est la declaration de la fonction
ligne 25: int imp_tablo(nbligne,nbcol,tablo[nbligne][nbcol])
Ici, il manque le type de nbligne, nbcol, et tablo. Essaye avec la déclaration suivante en ligne 25:
int imp_tablo(int n, int m, int tablo[2][3]);
(note les constantes dans la déclaration du paramètre de type tableau. Pour faire plus propre il faudrait utiliser des #define)
Ensuite pour l'appel dans le main(), il te suffit d'utiliser tout simplement:
imp_tableau(ligne, col, tableau); // appel au sous-programme
Ca devrait mieux marcher je pense.
sam.
Bon jour ça marche!! merci
Je n'ai pas vu le lien entre la modif et le message sybillin du compilateur
marquant: la déclarationen erreur.
error expected ')' 'before' '[' token
Voila mon pg adhoc:
Remarques:
Il n'y a pas de controle ni à la compilation ni a l'execution des limites du
tableau, sauf à se le programmer,. le "printf("%d", tablo[5][5]:;" imprime
n'importe quoi mais aucune alerte.
.......................................................................................................
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ligne=2;
int col=3;;
int tableau[ligne][col];
tableau[0][0]=1; tableau[0][1]=2;tableau[0][2]=3;
tableau[1][0]=4;tableau[1][1]=5;tableau[1][2]=6;
imp_tablo(ligne, col, tableau); // appel au sous-programme
}
//...............SSous_programme...........
int imp_tablo(int n, int m, int tablo[n][m]) //declaration fonction
{
printf("%d",tablo[1][1]);
}
"Samuel DEVULDER" <samuel-dot-devulder-at-laposte-dot-net> a écrit dans le
message de news: 53d01315$0$2039$426a74cc@news.free.fr...
Le 22/07/2014 18:48, andre barbaroux a écrit :
line 25 error expected ')' 'before' '[' token Qur je ne comprend pas?
cette ligne est la declaration de la fonction
ligne 25: int imp_tablo(nbligne,nbcol,tablo[nbligne][nbcol])
Ici, il manque le type de nbligne, nbcol, et tablo. Essaye avec la
déclaration suivante en ligne 25:
int imp_tablo(int n, int m, int tablo[2][3]);
(note les constantes dans la déclaration du paramètre de type tableau.
Pour faire plus propre il faudrait utiliser des #define)
Ensuite pour l'appel dans le main(), il te suffit d'utiliser tout
simplement:
imp_tableau(ligne, col, tableau); // appel au sous-programme
Bon jour ça marche!! merci Je n'ai pas vu le lien entre la modif et le message sybillin du compilateur marquant: la déclarationen erreur.
error expected ')' 'before' '[' token Voila mon pg adhoc: Remarques: Il n'y a pas de controle ni à la compilation ni a l'execution des limites du tableau, sauf à se le programmer,. le "printf("%d", tablo[5][5]:;" imprime n'importe quoi mais aucune alerte. .......................................................................................................
#include <stdio.h> #include <stdlib.h>
int main() { int ligne=2; int col=3;; int tableau[ligne][col]; tableau[0][0]=1; tableau[0][1]=2;tableau[0][2]=3; tableau[1][0]=4;tableau[1][1]=5;tableau[1][2]=6; imp_tablo(ligne, col, tableau); // appel au sous-programme } //...............SSous_programme........... int imp_tablo(int n, int m, int tablo[n][m]) //declaration fonction { printf("%d",tablo[1][1]); }
"Samuel DEVULDER" <samuel-dot-devulder-at-laposte-dot-net> a écrit dans le message de news: 53d01315$0$2039$
Le 22/07/2014 18:48, andre barbaroux a écrit :
line 25 error expected ')' 'before' '[' token Qur je ne comprend pas? cette ligne est la declaration de la fonction
ligne 25: int imp_tablo(nbligne,nbcol,tablo[nbligne][nbcol])
Ici, il manque le type de nbligne, nbcol, et tablo. Essaye avec la déclaration suivante en ligne 25:
int imp_tablo(int n, int m, int tablo[2][3]);
(note les constantes dans la déclaration du paramètre de type tableau. Pour faire plus propre il faudrait utiliser des #define)
Ensuite pour l'appel dans le main(), il te suffit d'utiliser tout simplement:
imp_tableau(ligne, col, tableau); // appel au sous-programme
Ca devrait mieux marcher je pense.
sam.
andre barbaroux
Bonjour Lucas et merci Tu m'écris: "Je ne comprens pas trop où tu veux en venir dans ce programme : à quoi sert de passer toto en argument puisqu'il est global ?" et tu as tout à fait raison.En fait j'ai écris cela pour une formation de base à mon petit fils pour lui expliquer, de vive voix' les variables globales,et les paramètres à passer aux SP. Tout a fait d'accord que tablo étant en global il n'y a pas à le passer en argument!En fait si je l'ai envoyé, -pour ce qui me concerne- c'est que je ne vois pas de difference de déclaration de fonction, et d'appel avec mon programme incriminé et je n'ai pas eu d'erreur de compil. Ceci est dépassé puisque grace à tous vos conseils j'ai posté à l'attention de Samuel et à tous le code qui fonctionne. La suite du code pour imprimer tout tableau en ligne et en colonne, (deux "for imbriqués") ne m'a pas posé de problèmes tant que ce code était dans le "Main" et donc sans les problèmes que j'ai eu en voulant le mettre en "fonction"
"Lucas Levrel" a écrit dans le message de news:
Bonjour,
Le 23 juillet 2014, andre barbaroux a écrit :
Je veux depuis le main passer passer le bombre de lignes , de colonne et le nom du tableau, avec ou sans les crochets indiquant les tableau multi dimensionnel
Dans la fonction imp_tablo, veux-tu imprimer tout le tableau, ou seulement une cellule ? Note que la déclaration int tableau[8][8]; signifie « tableau est une table de 8×8 entiers », mais dans le reste du code, tableau[x][y] désigne la case (x,y) du tableau, un entier donc. Si tu passes ça à une fonction, il faut que la fonction prenne un entier (et non un tableau) comme argument.
J'ai ecrit un petit programme qui marche trés bien et qui montre le global, l'appel de fonction. #include <stdio.h> #include <stdlib.h> int short tableau[8][8]; int toto;
// programme principal
int main() { // sous-programme
tableau[0][0]=9; imp_tablo(toto); return 0; } // sous programme
Je ne comprens pas trop où tu veux en venir dans ce programme : à quoi sert de passer toto en argument puisqu'il est global ?
-- LL ?? ???? ??? ????? ???? (????????)
Bonjour Lucas et merci
Tu m'écris:
"Je ne comprens pas trop où tu veux en venir dans ce programme : à quoi
sert de passer toto en argument puisqu'il est global ?"
et tu as tout à fait raison.En fait j'ai écris cela pour une formation de
base à mon petit fils pour lui expliquer, de vive voix' les variables
globales,et les paramètres à passer aux SP.
Tout a fait d'accord que tablo étant en global il n'y a pas à le passer en
argument!En fait si je l'ai envoyé, -pour ce qui me concerne- c'est que je
ne vois pas de difference de déclaration de fonction, et d'appel avec mon
programme incriminé et je n'ai pas eu d'erreur de compil.
Ceci est dépassé puisque grace à tous vos conseils j'ai posté à l'attention
de Samuel et à tous le code qui fonctionne. La suite du code pour imprimer
tout tableau en ligne et en colonne, (deux "for imbriqués") ne m'a pas posé
de problèmes tant que ce code était dans le "Main" et donc sans les
problèmes que j'ai eu en voulant le mettre en "fonction"
"Lucas Levrel" <lucas.levrel@u-pec.fr> a écrit dans le message de news:
alpine.LSU.2.10.1407241058250.3029@coulomb.u-pec.fr...
Bonjour,
Le 23 juillet 2014, andre barbaroux a écrit :
Je veux depuis le main passer passer le bombre de lignes , de colonne
et
le nom du tableau, avec ou sans les crochets indiquant les tableau multi
dimensionnel
Dans la fonction imp_tablo, veux-tu imprimer tout le tableau, ou seulement
une cellule ? Note que la déclaration
int tableau[8][8];
signifie « tableau est une table de 8×8 entiers », mais dans le reste du
code,
tableau[x][y]
désigne la case (x,y) du tableau, un entier donc. Si tu passes ça à une
fonction, il faut que la fonction prenne un entier (et non un tableau)
comme argument.
J'ai ecrit un petit programme qui marche trés bien et qui montre le
global, l'appel de fonction.
#include <stdio.h>
#include <stdlib.h>
int short tableau[8][8];
int toto;
// programme principal
int main()
{
// sous-programme
tableau[0][0]=9;
imp_tablo(toto);
return 0;
}
// sous programme
Bonjour Lucas et merci Tu m'écris: "Je ne comprens pas trop où tu veux en venir dans ce programme : à quoi sert de passer toto en argument puisqu'il est global ?" et tu as tout à fait raison.En fait j'ai écris cela pour une formation de base à mon petit fils pour lui expliquer, de vive voix' les variables globales,et les paramètres à passer aux SP. Tout a fait d'accord que tablo étant en global il n'y a pas à le passer en argument!En fait si je l'ai envoyé, -pour ce qui me concerne- c'est que je ne vois pas de difference de déclaration de fonction, et d'appel avec mon programme incriminé et je n'ai pas eu d'erreur de compil. Ceci est dépassé puisque grace à tous vos conseils j'ai posté à l'attention de Samuel et à tous le code qui fonctionne. La suite du code pour imprimer tout tableau en ligne et en colonne, (deux "for imbriqués") ne m'a pas posé de problèmes tant que ce code était dans le "Main" et donc sans les problèmes que j'ai eu en voulant le mettre en "fonction"
"Lucas Levrel" a écrit dans le message de news:
Bonjour,
Le 23 juillet 2014, andre barbaroux a écrit :
Je veux depuis le main passer passer le bombre de lignes , de colonne et le nom du tableau, avec ou sans les crochets indiquant les tableau multi dimensionnel
Dans la fonction imp_tablo, veux-tu imprimer tout le tableau, ou seulement une cellule ? Note que la déclaration int tableau[8][8]; signifie « tableau est une table de 8×8 entiers », mais dans le reste du code, tableau[x][y] désigne la case (x,y) du tableau, un entier donc. Si tu passes ça à une fonction, il faut que la fonction prenne un entier (et non un tableau) comme argument.
J'ai ecrit un petit programme qui marche trés bien et qui montre le global, l'appel de fonction. #include <stdio.h> #include <stdlib.h> int short tableau[8][8]; int toto;
// programme principal
int main() { // sous-programme
tableau[0][0]=9; imp_tablo(toto); return 0; } // sous programme