les fonctions, tout un problème
Bonsoir,
Dans le cadre d'un cours d'informatique un collègue et moi on doit créer un programme capable de contrôler deux moteurs pas à pas de tel sorte à que ceux-ci dessinent un carré.
Rassurez-vous, je ne vais pas vous demander de le faire à ma place (je ne pense pas que vous le feriez de toute façon). Cependant, comme nous sommes débutant dans le
domaine de la programmation et plus encore en C, votre aide serait la bienvenue.
Donc voici notre soucis:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
| #include <stdio.h>
#include <math.h>
//je déclare deux tableaux que je vais remplir par la suite.
float coordinatesX [80];
float coordinatesY [80];
int main(int argc, char *argv[]){
int i,x,y,z;
for(i=0;i<20;i++){
coordinatesX [i]= 50;
} // Rempli le tableau coordinateX avec pour les 20 premiers elements la valeur 50 et le reste indefini
for(x=20;x<40;x++){
coordinatesX [x]= 50+(x-19);
}// Le meme tableau de 20 a 29 avec des valeurs de 51 a 71
for(y=40;y<60;y++){
coordinatesX [y]= 70;
} // de 50 a 60 avec la valeur 70
for(z=60;z<80;z++){
coordinatesX [z]= 70 -(z-59);
}// de 60 a 80 avec les valeurs 71 a 49
//Je remplis également le tableaux des coordonnées Y à l'aide de boucle "for" mais avec de valeurs différentes
for(i=0;i<20;i++){
coordinatesY [i] = 5-i;
}
for(x=20;x<40;x++){
coordinatesY [x] = -15;
}
for(y=40;y<60;y++){
coordinatesY [y] = -15+(y-40);
}
for(z=60;z<80;z++){
coordinatesY [z] = 5;
}
vecteurAP(coordinatesY);// j'envoie le tab. de coordonnées Y au vecteur AP
vecteurBP(coordinatesY);//j'envoie le tab. de coordonnées Y au vecteur BP
normeAP(coordinatesX);//J'envoie le tab. de coordonnées X à la fct. norme pour calculer la norme AP
normeBP(coordinatesX);//J'envoie le tab. de coordonnées X à la fct. norme pour calculer la norme BP
}//je désir que les tableaux que j'envoie restent tel que je l'ai remplis indépendemment des calculs que je fais avec à posteriori.
void vecteurAP(float coordinatesY[]);//je déclare ma vonction AP
void vecteurBP(float coordinatesY[]);//Je déclare ma fonction vecteur BP
// Cette fonction prend un tableau a une dimension (un vecteur) de coordonnees et rempli
// Le tableau coordinates YAP avec les elements de ce vecteur auxquels on a soustrait 35.
void vecteurAP (float coordinatesY[]){
float coordinatesYAP [80];//je déclare un nouveau tab. que je vais remplir à l'aide de celui que j'ai remplis précedemment c-à-d coordonnées Y
float l = 70;
int i;
for(i=0;i<80;i++){
coordinatesYAP [i] = coordinatesY [i]-(l/2);
}
normeAP(coordinatesYAP);//une fois mon vecteurYAP remplis à l'aide des coordonnées Y je l'envoie à la fct. norme AP
}//de même que pour la fct vecteur AP mais cette fois ci pour le vecteur BP
void vecteurBP (float coordinatesY[]){
float coordinatesYBP [80];
float l = 70;
int i;
for(i=0;i<80;i++){
coordinatesYBP [i] = coordinatesY [i]+(l/2);
}
normeBP(coordinatesYBP);//une fois mon vecteurYAP remplis à l'aide des coordonnées Y je l'envoie à la fct. norme AP
}
void normeAP(float coordinatesYAP[],float coordinatesX[]);//je déclare mes fcts. normes
void normeBP(float coordinatesYBP[],float coordinatesX[]);
//je les remplis à l'aide des coordonnées X et du vecteur YAP, que j'ai remplis avant, la norme AP
void normeAP (float coordinatesYAP[], float coordinatesX[]){
float normeAP [80];//déclaration du tableau normeAp
int a;
for(a=0;a<80;a++){
normeAP[a] = coordinatesX[a]*coordinatesX[a] + coordinatesYAP[a]*coordinatesYAP[a];
}
for(a=0;a<80;a++){
normeAP[a]= sqrtf(normeAP[a]);
}
// angleAlpha1(normeAP);
angleAlpha2(normeAP);//j'envoi la norme que j'ai calculé à l'angle alpha 2
// angleBeta1(normeAP);
angleBeta2(normeAP);//j'envoi la mème norme que j'ai calculé à l'angle beta 2
}
void normeBP (float coordinatesYBP[], float coordinatesX[]){//même chose que pour la norme AP mais avec les coordonnées YBP et X pour la calculer
float normeBP [80];//déclaration du tab.norme BP
int a;
for(a=0;a<80;a++){
normeBP[a] = coordinatesX[a]*coordinatesX[a] + coordinatesYBP[a]*coordinatesYBP[a];
}
for(a=0;a<80;a++){
normeBP[a]= sqrtf(normeBP[a]);
}
// angleAlpha1(normeBP);
angleAlpha2(normeBP);//j'envoi la norme que j'ai calculé à l'angle alpha 2
// angleBeta1(normeBP);
angleBeta2(normeBP);
}
//void angleAlpha1(float normeAP[], float normeBP []);
void angleAlpha2(float normeAP[], float normeBP []);//Je déclare mes fcts. d'angles
//void angleBeta1(float normeAP[], float normeBP[]);
void angleBeta2(float normeAP[], float normeBP[]);
//et j'utilise les tableaux que j'ai remplis avant pour remplir un autre tab. avec les angles
void angleAlpha2 (float normeAP[], float normeBP[]){
float angleAlpha2[80];
float l = 70;
int a;
for(a=0;a<80;a++){
angleAlpha2[a]= (powf(l,2) + powf(normeAP[a],2) - powf(normeBP[a],2)) /
(2 * l * normeAP[a]);
}
}
void angleBeta2 (float normeAP[], float normeBP[]){
float angleBeta2[80];
float l = 70;
int a;
for(a=0;a<80;a++){
angleBeta2[a]= (powf(l,2) + powf(normeBP[a],2) - powf(normeAP[a],2)) /
(2 * l * normeBP[a]);
}
impression(angleBeta2);//j'envoie mon tab. d'angles à la fct imprimer
}
//comme étape intermédiaire je décide d'imprimer les supposés angles grace à cette fct...mais ça ne marche pas.
void impression(float angleBeta2[]);
void impression(float angleBeta2[]){
int a;
for(a=0;a<80;a++){
printf("%f\n", angleBeta2[a]);
}
} |
Donc voilà, on n'a pas de problèmes pour compiler mais par contre on a une bonne quantité de "warnings". La fonction imprimer n'est là que pour contrôler le résultat des opp. math. une fois qu'elles seront correctes on l'effacera.
On se doute qu'on n'a pas su appeler, déclarer ou définir les fonctions (ou les trois).
voici la liste de warnings:warning: conflicting types for 'vecteurAP' [enabled by default]|
|37|note: previous implicit declaration of 'vecteurAP' was here|
c'est tout le temps la même chose mais avec toute le déclaration...
Merci d'avance de votre aide.