bonjour, alors voilà, j'ai un problème avec un exercice d' informatique, il faut créer un programme qui porte sur les vecteurs, quand je le compile, il n'y a aucune erreur, mais les quatres dernières fonctions ne marchent pas, il ne veut pas les exécuter, je pense que le problème vient du produit vectoriel, mais je bloque depuis 4 jours dessus, s'il vous plait, aidez moi. Merci d'avance
Voici le programme :
#include <stdio.h> /* Davo-Brunet */
#include <math.h>
int main (void)
{
/* declaration de toutes les variables de la fonction */
int N;
float scalaire;
float composantes0[20];
float composantes1[20];
float composantes2[20];
float stocage[20];
float Nov,Nov2,Nov3,PS,PM1,PM2;
float t1,t2,r1,r2,r,t,X,Y,x1,x2,v1,v2,a,b,c,d,e,f,g,h,i;char Bof[50];
/* declaration des fonctions appelees */
int NbreComposantes(void);
void EntrerVecteur (float *pcomposantes,int nb);
void EcrireVecteur (float *pcomposantes,int nb);
float NormeVecteur (float composantes[20], int nb);
void VecteurPlusVecteur( float composantes0[20], float composantes1[20] ,float composantes2[20],int nb);
void VecteurParScalaire( float a, float *composantes2, int nb);
float Norme2 (float composantes[20], int nb);
float Norme3 (float composantes[20], int nb);
void Normalise( float *composantes, int nb );
float ProduitScalaire( float composantes0[20], float composantes1[20], int N);
void ProduitVectoriel( float composantes0[20],float composantes1[20],float *stoc,int n );
float ProduitMixte1( float composantes0[20], float composantes1[20], float composantes2[20],int N );
float ProduitMixte2( float composantes0[20], float composantes1[20], float composantes2[20],int N );
void DoubleProdVect1( float composantes0[20], float composantes1[20], float composantes2[20],float *stoc,int N);
void DoubleProdVect2( float composantes0[20], float composantes1[20], float composantes2[20],float *stoc,int N);
/* saisie et verification de la validite des donnees saisies */
N=NbreComposantes();
a=r1;b=t1;x1=c;
d=r1;e=t1;v1=f;
a=r2;b=t2;x2=c;
d=r2;e=t2;v2=f;
X=x1+x2;Y=v1+v2;
/* traitement des donnees */
printf("Vous avez choisis %d argumens pour le vecteur V.\n",N);
EntrerVecteur (composantes0,N);
EcrireVecteur (composantes0,N);
/* calcul et affichage des normes */
Nov=NormeVecteur (composantes0,N);
printf("\nLa 1ere norme =%f. ",Nov);
Nov2=Norme2 (composantes0,N);
printf("\nLa 2nde norme =%f. ",Nov2);
Nov3=Norme3 (composantes0,N);
printf("\nLa 3eme norme =%f. \n",Nov3);
/* traitement avec deux vecteurs */
EntrerVecteur (composantes1, N);
EcrireVecteur ( composantes1,N );
PS=ProduitScalaire( composantes0, composantes1,N); /* Le produit scalaire */
printf("\nLe produit scalaire des deux vecteurs = %f \n",PS );
VecteurPlusVecteur(composantes0, composantes1, composantes2,N ); /* la somme */
printf("\nVoici la somme des deux vecteurs :");
EcrireVecteur (composantes2,N);
printf("\nPar quel scalaire voulais vous multiplier ce dernier ? : "); /* la multiplication par un scalaire */
scanf("%f",&scalaire);
VecteurParScalaire(scalaire,composantes2,N);
EcrireVecteur (composantes2,N);
printf("\nLe voici normalise : ");
Normalise(composantes2,N);
EcrireVecteur (composantes2,N);
printf("\n\tEntrez R1(module du vecteur1):\t\t");
scanf("%f",&r1);
printf("\n\tEntrez T1(argument du vecteur1):\t");
scanf("%f",&t1);
printf("\n\tEntrez R2(module du vecteur2):\t\t");
scanf("%f",&r2);
printf("\n\tEntrez T2(argument du vecteur2):\t");
scanf("%f",&t2);
return 0;
}
/* Definition des fonctions */
int NbreComposantes (void)
{
int n1;
do
{
printf("\nChoisissez le nombre d'arguments du vecteur (compris entre 2 et 20) : ");
scanf("%d",&n1);
}
while (n1<2||n1>20);
return n1;
}
void EntrerVecteur (float *pcomposantes,int nb)
{
int i;
printf("\nVeuillez entrez votre vecteurs d'il vous plait : \n");
for (i=0;i<nb;i=i+1)
{
do
{
printf(" V%d = ",i);
scanf("%f",(pcomposantes+i));
}
while (*(pcomposantes+i)<-10||*(pcomposantes+i)>10);
}
return ;
}
void EcrireVecteur (float *pcomposantes,int nb)
{
int i;
printf("\nLe vecteur x s'ecrit : \n");
for (i=0;i<nb;i=i+1)
{
printf(" X%d= %f \n",i,*(pcomposantes+i));
}
return ;
}
float NormeVecteur (float composantes0[20], int nb)
{
int i;
float norme=0;
for (i=0;i<nb;i=i+1)
{
norme=composantes0[ i ]*composantes0[ i ] + norme;
}
norme= norme*norme/2;
return norme ;
}
float Norme2( float composantes0[20], int nb )
{
int i;
float norme=0;
for( i=0;i<nb;i++)
{
if(composantes0[ i ]>=0)
{
norme=composantes0[ i ] + norme;
}
else
{
norme=-composantes0[ i ] + norme;
}
}
return norme;
}
float Norme3( float composantes0[20], int nb )
{
int i;
float norme3=0;
for( i=0;i<nb;i++)
{
if(composantes0[ i ] <0) /* on cherche le maximum de la valeur absolue pour la retourner */
{
if(-composantes0[ i ]>norme3)
{
norme3=-composantes0[ i ];
}
}
else
{
if(composantes0[ i ]>norme3)
{
norme3=composantes0[ i ];
}
}
}
return norme3;
}
void Normalise( float composantes[20], int nb )
{
int i;
float norme=NormeVecteur( composantes, nb ); /* on initialise la norme à sa valeur */
for( i=0; i<nb;i++ )
{
composantes[ i ] = composantes[ i ]/ norme; /* chaque argument on le divise par la norme */
}
return ;
}
void VecteurPlusVecteur( float composantes0[20],float composantes1[20], float composantes2[20], int nb)
{
int i;
for(i=0;i<nb;i++)
{
composantes2[i]=composantes0[i]+composantes1[i]; /* on fait la somme des deux composantes */
}
return ;
}
void VecteurParScalaire( float a, float *composantes2, int nb)
{
int i;
for( i=0;i<nb;i++)
{
composantes2[i]=composantes2[i]*a; /* chaques arguments ont le multiplie par a */
}
return ;
}
float ProduitScalaire( float composantes0[20] ,float composantes1[20],int n )
{
int i;
float PS=0;
for( i=0; i<n ; i++ )
{
PS = composantes0[ i ] * composantes1[ i ] + PS;
}
return PS;
}
void ProduitVectoriel( float composantes0[20],float composantes1[20],float *stoc,int n )
{
/* ici tu devra faire le produit vectoriel de vomposantes0 et composantes1 et mettre le resultat dans stoc */
}
float ProduitMixte1( float composantes0[20], float composantes1[20], float composantes2[20],int N )
{
float PM1;
float PV[20];
ProduitVectoriel( composantes0, composantes1,PV,N ); /* on stoque le produit vectoriel dand PV */
PM1=ProduitScalaire( PV , composantes2,N ); /* et on calcul le produit scalaire pour avoir le produit mixte */
return PM1;
}
float ProduitMixte2( float composantes0[20], float composantes1[20], float composantes2[20],int N )
{
float PM2;
float PV[20];
ProduitVectoriel( composantes1, composantes2,PV,N ); /* on stoque le produit vectoriel dand PV */
PM2=ProduitScalaire( composantes0, PV, N ); /* et on calcul le produit scalaire pour avoir le produit mixte*/
return PM2;
}
void DoubleProdVect1( float composantes0[20], float composantes1[20], float composantes2[20],float *stoc,int N)
{
float DPV1[20];
ProduitVectoriel( composantes1,composantes2,DPV1 , N ); /* on met le premier resultat dans DPV1 */
ProduitVectoriel(DPV1,composantes2,stoc , N ); /* on met le second resultat dans stoc */
return ;
}
void DoubleProdVect2( float composantes0[20], float composantes1[20], float composantes2[20],float *stoc,int N)
{
float DPV2[20];
ProduitVectoriel( composantes1,composantes2,DPV2 , N ); /* on met le premier resultat dans DPV2 */
ProduitVectoriel(composantes0, DPV2,stoc, N); /* on met le second resultat dans stoc */
return ;
}
Afficher la suite