Pb language C

Fermé
Appoline - 22 nov. 2008 à 16:45
 Appoline - 22 nov. 2008 à 19:54
Bonjour à tous,

voila je débute en programmation en language C et j'ai une doute en ce qui concerne la ligne de code qui suit, je ne vois pas ce que ça veux dire :

for (PS=0, I=1; I<N+1; I++)
      PS += (float)U[I]*V[I];


Si quelqu'un a une explication, je vous remercie d'avance.
Bonne journée.

4 réponses

je reposte le code, j'en avais oublié un bout lol

 for (PS=0, I=1; I<N+1; I++)
      PS += (float)U[I]*V[I];
 
 printf("Produit scalaire : %f\n", PS);
 return 0;


en fait je ne comprend pas les 2 preimières lignes ainsi que la dernière.
Merci d'avance à tous
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 nov. 2008 à 17:00
Salut
Voici ton code commenté :
 for (PS=0, I=1; I<N+1; I++) // on initialise PS à 0, I à 1. Et on parcourt la ligne d'après tant que I inférieur strictement à N+1 (I sera incrémenté de 1 à chaque ligne). 
      PS += (float)U[I]*V[I]; //Produit scalaire entre le vecteur U et V.  (Ux*Vx+Uy*Vy+Uz*Vz)
 
 printf("Produit scalaire : %f\n", PS);
 return 0; //Fin du programme (ou de la fonction), tout s'est bien passé.

Cdlt
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
22 nov. 2008 à 17:00
1 ere ligne c'est une boucle for tu initialise P a 0 al'interieur du for
2eme ligne P est egal au scalaire des deux tableaux U et V, tu connais la formule du scalaire je pense
derniere ligne surment en rapport avec l'en tete de ta fonction qui precise que tu dois retourner un int
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
22 nov. 2008 à 17:09
Salut,

Ton code on pourra par exemple l'écrire de cette manière explicite
for (PS=0, I=1; I<N+1; I++)
  PS = PS + (((float)U[I])*V[I]);

printf("Produit scalaire : %f\n", PS);
return 0;


La ligne
PS += (float)U[I]*V[I];
C'est un raccourci pour PS = PS + (((float)U[I])*V[I]);
(float) c'est un opérateur de type qui fait la conversion de U[i] en float est il a une priorité plus grande que la multiplication *
Les parenthèses que j'ai ajouter c'est juste pour te montrer les opérations qui seront traitées en premier mais elles (les parenthèses) ne sont pas nécessaires dans ce cas.

return 0; veut dire que la fonction renvoie 0 si elle réussi en supposant que le type que ta fonctionne renvoie est un int
Je suppose que c'est le int main()
0
Merci à tous pour vos réponses ;-)
0