Retour d'une fonction [DEBUTANT] - C - Programmation
Marsh Posté le 26-01-2005 à 10:12:15
tu peux pas. Achète un K&R
Marsh Posté le 26-01-2005 à 10:12:32
renvoit une structure / une liste chainée si tu ne connais pas a l'avance le nombre d'éléments
(ou passe la par adresse à la fonction)
Marsh Posté le 26-01-2005 à 10:23:31
Je connais le nombre d'éléments.
Sinon c'est quoi un K&R ?
Marsh Posté le 26-01-2005 à 10:32:32
http://mapage.noos.fr/emdel/notes.htm#param_tab
le K&R => http://www.amazon.fr/exec/obidos/A [...] 5-5655362v
Marsh Posté le 26-01-2005 à 10:32:47
un K&R c'est kernigan et ritchie. LE bouquin à avoir pour commencer.
Marsh Posté le 26-01-2005 à 11:58:56
ReplyMarsh Posté le 26-01-2005 à 13:04:27
BlackGoddess a écrit : int tab[5]; |
Ah! Y'en a au moins un qui suit!
Merci, corrigé.
Marsh Posté le 26-01-2005 à 14:53:23
Merci bcp pour vos réponses.
Voici le résultat de mes essais :
Code :
|
Cela ne fonctionne pas .. Où est ce que je me suis trompé ?
Marsh Posté le 26-01-2005 à 15:03:11
Il me fait une erreur " la valeur indicée n'est ni un tableau ni un pointeur" à la compilation... je ne comprends pas pourquoi il attend un tableau ou un pointeur comme indice
Marsh Posté le 26-01-2005 à 15:48:04
l'exemple du site n'est pas tres clair a ce sujet ... un pointeur peut etre accédé comme un tableau a une dimension, c'est ce qu'utilise l'exemple ... cela ne fonctionne pas avec un tableau a 2 dimensions par contre
float *t => tu peux ecrire t[x], mais pas t[x][y]
Marsh Posté le 26-01-2005 à 16:04:16
Alors comment puis-je passer un tableau à 2 dimensions comme paramètre à une fonction ?
Marsh Posté le 26-01-2005 à 16:22:03
j'espère que je dis pas une connerie mais **t
(je suis jamais sur de moi en C)
Marsh Posté le 26-01-2005 à 16:43:05
float **t;
l'appelant doit l'allouer correctement :
Code :
|
Marsh Posté le 26-01-2005 à 16:45:46
il y a peut-etre une ecriture pour passer en paramètre un tableau à 2 dimensions ... sinon une structure peut t'aider :
Code :
|
Marsh Posté le 26-01-2005 à 17:36:18
black_lord a écrit : j'espère que je dis pas une connerie mais **t |
Non.
Marsh Posté le 26-01-2005 à 17:38:54
BlackGoddess a écrit : il y a peut-etre une ecriture pour passer en paramètre un tableau à 2 dimensions ... |
|
Marsh Posté le 27-01-2005 à 13:48:31
Un truc qui se fait en traitement d'image :
au lieu de déclarer un tableau à 2 dimensions, tu utilise un tableau à une seule dimension mais donc tu connais le nombre de lignes et nombre de colonnes.
Par exemple :
Code :
|
Marsh Posté le 27-01-2005 à 14:15:32
Je veux bien mais il y a un problème dans ton raisonnement :
Si je prends les cases[6;3] et [3;7] elles pointent toutes les 2 vers la case t[5280] donc cela ne fonctionne pas dsl
A+
Marsh Posté le 27-01-2005 à 14:34:56
hein ? Je pense que tu te plantes ...
Si tu vois le tableau d'une seule dimension, en fait, tu as chaque ligne, les unes à la suite des autres (chaque ligne ayant une taille de NB_COL).
donc pour accéder au début de la ligne i, t'es d'accord, que tu avance dans ton tableau à une dimension, de i*NB_COL.
Ensuite, pour accéder à la colonne j, ben t'ajoute j ... d'ou i*NB_COL+j.
Je vois pas comment tu as raisonné ... ???
pour NB_COL=480
case(6,3)=tab[6*NB_COL+3]=tab[6*480+3]=tab[2883]
case(3,7)=tab[3*NB_COL+7]=tab[3*480+7]=tab[1447]
... tu vois ?
Marsh Posté le 27-01-2005 à 14:40:15
t'es sur ?
Marsh Posté le 27-01-2005 à 15:12:54
int calcul_du_tableau_des_versements(float (*t)[MAXPERIODES]);
Les parenthèses sont nécessaires à cause de la priorité des opérateurs :
- float *t[N] : déclare N pointeurs sur des float
- float (*t)[N] : déclare 1 pointeur sur un tableau de float avec N colonnes
Devant la lourdeur de la syntaxe, et pour prendre de meilleurs habitudes, il vaut mieux passer par une structure :
Code :
|
Marsh Posté le 27-01-2005 à 15:20:59
black_lord a écrit : t'es sur ? |
Un T ** en parametre, c'est ok pour un tableau de pointeurs. Ca permet de simuler un tableau à 2 dimensions (utilisation de [i][j]), mais le tableau en question n'est pas linéaire. Il pourrait même avoir des lignes vides (NULL).
Pour un vrai tableau à deux dimensions, je le répète, le paramètre doit être de la forme 'T p[X][Y]' ou 'T p[][Y]'
Ca peut aussi être pointeur sur tableau : 'T (*p)[X][Y]' (je ne suis pas sûr de la syntaxe), mais ça complique le code et la maintenance... Par contre, la taille réelle est transportée...
Marsh Posté le 27-01-2005 à 15:22:31
ok
Marsh Posté le 26-01-2005 à 10:02:34
Bonjour,
Je cherche à faire en C une fonction qui me renvoie plusieurs valeurs?
Avez vous une idée comment je peux faire ?
En fait c'est le calcul des mensualités d'un remboursement, et la fonction doit pouvoir renvoyer l'ensemble des valeurs des remboursements.
Merci d'avance.
A+
Message édité par sylvainleleu le 26-01-2005 à 12:46:56