Pb language C

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.
Configuration: Windows Vista
Firefox 3.0.4

4 réponses

  1. 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
    1. Contributeur
      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
      1. 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
        1. Modérateur
          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()
          1. Merci à tous pour vos réponses ;-)