Pb language C

Appoline -  
 Appoline -
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. Appoline
     
    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
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  3. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    1. Appoline
       
      Merci à tous pour vos réponses ;-)
      0