int triParInsertion(int Tab[int N]); /*1*/
int main()
{
/*fonction main*/
triParInsertion(T[nb]); /*T[nb rempli au préalable dans la fonction*/
return 0;
}
int triParInsertion(int Tab[int N]) /*2*/
{
/*corps de la fonction*/
return Tab[N]; /* qui serait donc trié après avoir été modifié par la fonction*/
}
fatal_error a écrit:effectivement, c'est pas du luxe, c'est du gachis.
le siteduzero de mémoire,
une simple recherche: how to pass an array in c suffit!
/* En C99 l'écriture suivante est autorisée */
int N = 0;
scanf("%d\n", &N);
int tab[N] = {0};
/* En C99 l'écriture suivante est autorisée */
int N = 0;
scanf("%d\n", &N);
int tab[N] = {0};int N;
scanf("%d\n", &N);
int tab[N];gcc -std=c89 -pedantic-errors main.c -o test
main.c: In function test:
main.c:4:2: erreur: ISO C90 forbids variable length array a [-Wvla]Rockleader a écrit:En réalité le code suivant passerait très bien sous gcc.
- Code: Tout sélectionner
int N;
scanf("%d\n", &N);
int tab[N];
A priori écrire cela à l'air de vous choquer, mais franchement moi ça ne me choque pas plus que ça;
int N;
int tab[N];Si Fatal et moi te disons de déclarer un tableau avec une dimension connue
int N; /* Je ne connais pas la valeur de N */
int N = 0; /* Je sais que N vaut 0 */
int N = 0;
scanf("%d", &N);
/* Méthode 1 */
int tab[5];
tab[0] = 0;
tab[1] = 0;
tab[2] = 0;
tab[3] = 0;
tab[4] = 0;
/* Avec une boucle for */
int tab[5];
int i = 0;
for (i = 0; i Impossible de le savoir.
[CODE]int tab[10];
int i = 0;
printf("%d", tab[i]);
Dlzlogic a écrit:Excuse ma brutalité, mais étant donné qu'au bout de 3 ans d'informatique, tu sembles être toujours au point de départ, ta méthode ne parait pas la meilleure.
Généralement quand on demande de l'aide et des conseils, c'est qu'on est prêt à les accepter.
Si Fatal et moi te disons de déclarer un tableau avec une dimension connue, fais-le et passe à autre-chose.
Par exemple renseigne-toi sur l'initialisation, c'est une notion fondamentale.
Et que penses-tu du code
Code:
int N;
int tab[N];
Ta remarque était plus que justifier. Quel interêt d'initialiser N à 0 sachant qu'on l'initialise depuis le scanf. Tout simplement parce que le jour où tu décides d'initialiser N autrement tu seras qu'au départ il vaut 0. (On verra un exemple d'erreur possible)
Ainsi donc si je vois 58595095 en faisant un affichage d'une case je verrais bien qu'il y a un problème à la l'excécution; alors que si j'initialise a valeur à 0...et que derrière j'ai un programme qui me calculera des valeurs faisant éventuellement intervenir un 0 (ce qui nest pas même pas si rare que ça) je ne détecterai pas l'erreur au premier coup dil.
Tu me diras ça dépend donc de ce que fera le corps du programme.
Ensuite, pour la taille fixe du tableau; l'an dernier en ada, on nous a souvent bassiner qu'il était plus pratique d'utiliser des tableau à taille variables; mais que le langage ne permettait pas cette option, on était obligé de mettre une valeur maximale.
Si tu as une spec qui te dit que tu dois traiter les valeur entre 0 et 500; bon bah ok tu déclare ton Tab[500] ou Tab[N] en ayant au préalable défini N en constante. Là je vous rejoins.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :