IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Produit scalaire tableau


Sujet :

C

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 7
    Par défaut Produit scalaire tableau
    Bonjour ,j'ai fait un programme produit scalaire . J'ai réussi à faire la multiplication de x par le scalaire 2.0 mais je n'arrive pas à faire l'initialisation de z avec la somme de x et y. Quelle est mon erreur car je n'arrive pas à la trouver.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    /* declaration de fonctionnalites supplementaires */
     
    #include <stdlib.h> /* EXIT_SUCCESS */
    #include <stdio.h> /* printf */
     
    /* declarations des constantes et types utilisateurs */
    #define DIM 5 /* dimension de l’espace vectoriel */
    /* declarations des fonctions utilisateurs */
    /* fonction principale */
    int main()
    {
        /* soient 3 vecteurs x,y et z */
        double x[DIM] = {1.0,-2.3,2.0,2.2,-0.3};
        double y[DIM] = {-1.0,-0.1,1.5,0.4,-0.3};
        double z[DIM];
        int i; /* var. de boucle */
        int j;
        double a;
     
        for(i = 0;i < DIM;i = i + 1) /* chaque composante */
        {
            /* affichage de la composante */
            printf("b= %g ",x[i]);
        }
        /* i >= DIM */
        printf("\n");
        /* multiplication de x par le scalaire 2.0 */
        for(i = 0;i < DIM;i = i + 1) /* chaque composante */
        {
             a = x[i]*2.0 ;
            /* affichage de la composante */
            printf("a= %g \n",a);
        }
     
        /* initialisation de z avec la somme de x et y */
     
        for(i=0;i< DIM ; i = i + 1)
        {
            printf(" z= %g \n",z);
            z[i]=x[i] + y[i];
     
        }
     
        return EXIT_SUCCESS;
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Alors, avant toute chose...
    Pour mettre en forme ton code, utilise la balise code, qui nous permet d'avoir accès à la coloration syntaxique et ainsi d'être plus lisible.
    Ensuite, indente ton code ! En l'état actuel, même avec une coloration syntaxique, il est illisible.
    EDIT : Ok ça a été fait pendant que j'écrivais.

    Ensuite...
    Quel est l'erreur ?

    Tu nous dis devoir initialisé z (au passage, de préférence, essaye d'utiliser des noms de variable évocateur).
    Es-tu si sûre que ça qu'il n'est pas initialisé ?

    Indice : Problème d'affichage.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 7
    Par défaut
    J'ai repris mon code et j'ai indenter pour être clair. Mais lorsque je compile je ne trouve toujours pas la somme de x et de y pour z.Je ne comprends pas pourquoi. J'ai bien déclaré z. Ce que j'obtiens lorsque je compile est :
    b=1 b=-2.3 b=2 b=2.2 b=0.3
    a=2 a=-4.6 a=4 a=4.4 a=-0.6
    z=-0.6 z=-0.6 z=-0.6 z=-0.6 z=-0.6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    /* declaration de fonctionnalites supplementaires */
     
    #include <stdlib.h> /* EXIT_SUCCESS */
    #include <stdio.h> /* printf */
     
    /* declarations des constantes et types utilisateurs */
     
    #define DIM 5 /* dimension de l’espace vectoriel */
     
    /* declarations des fonctions utilisateurs */
     
    /* fonction principale */
     
    int main()
    {
            /* soient 3 vecteurs x,y et z */
            double x[DIM] = {1.0,-2.3,2.0,2.2,-0.3};
            double y[DIM] = {-1.0,-0.1,1.5,0.4,-0.3};
            double z[DIM];
            int i; /* var. de boucle */
            double a;
     
            for(i = 0;i < DIM;i = i + 1) /* chaque composante */
                {
                        printf("b= %g ",x[i]);/* affichage de la composante */
                }
                printf("\n");/* i >= DIM */
     
           /* multiplication de x par le scalaire 2.0 */
           for(i = 0;i < DIM;i = i + 1) /* chaque composante */
                {
                       a = x[i]*2.0 ;
                       printf("a= %g \n",a);/* affichage de la composante */
                 }
     
           /* initialisation de z avec la somme de x et y */
     
           for(i=0;i< DIM ; i = i + 1)
                {
                      printf(" z= %g \n",z);
                       z[i]=x[i] + y[i];
                 }
     
           return EXIT_SUCCESS;
    }

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Je suis sûr que tu peux me dire ce qui est mauvais dans cette partie:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    double z[DIM];
     
    ...
     
    /* initialisation de z avec la somme de x et y */
    for(i=0;i< DIM ; i = i + 1)
    {
    	printf(" z= %g \n",z);
    	z[i]=x[i] + y[i];
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 7
    Par défaut
    Je ne vois vraiment pas. Je vous dis ce que j'ai fait :
    - J'ai refais la compilation en remplacant i par DIM même si que je savais que c'était inutile parce que DIM vaut 5 et que moi j'ai pris int i comme variable.
    - J'ai remplacer int i par double i
    -J'ai remplacer par %e dans printf
    -J'ai fait dans printf : printf("%g + %g = %g , x , y , z);.
    Avec tous ces moyens , je n'ai pas réussi.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    1. Tu fais un printf de z au lieu de z[i]. printf() reçoit un pointeur vers le premier élément de z, et tente de l'afficher comme si c'était un nombre à virgule flottante.
    2. Tu tentes d'afficher la valeur avant d'avoir écrit dedans!
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 7
    Par défaut
    J'ai bien réussi le /* initialisation de z avec la somme de x et y */ et maintenant je dois faire /* recopie de z dans y */
    J'ai déclaré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int permute; /déclarer dans la déclaration
     
    /* recopie de z dans y */
    for(i=0 ;i< DIM ; i = i + 1)
        {
            y[i] = permute;
            permute = z[i];
            z[i] = y[i];
     
            printf(" z = %g",z[i]);
        }

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Oh là là, mais lis-tu seulement le code que tu écris?
    Ton code lit la variable permute avant de l'écrire!

    De plus, ce code ne fait pas une recopie, il fait (mal) un échange.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. produit scalaire de 2 string
    Par nypahe dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 06/03/2009, 09h49
  2. calcul de produit scalaire sous PHP
    Par abegault dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2008, 14h41
  3. produit scalaire de 2 vecteurs
    Par aroua dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 07/04/2008, 13h06
  4. Produit scalaire en méta-prog, problème :p
    Par Bakura dans le forum C++
    Réponses: 5
    Dernier message: 12/06/2007, 16h03
  5. Angle entre deux droites quelconques par produit scalaire
    Par cyber_N dans le forum Mathématiques
    Réponses: 6
    Dernier message: 22/05/2005, 20h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo