fonction somme de 2 vecteurs en C
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

fonction somme de 2 vecteurs en C



  1. #1
    wafa9CH

    fonction somme de 2 vecteurs en C


    ------

    salut tout le monde!
    je suis débutante en langage C et je bloque dans un exercice qui demande d'effectuer la somme de 2 vecteurs par une fonction
    j'essaye mais tjrs sans résultat
    je me demande si vous pouvez m'aider!
    merci d'avance!
    voici mon programme

    #include <stdio.h>
    #include <stdlib.h>
    int somme (int A, int B, int N) ;
    void main()

    Code:
    { int T1[10], T2[10], T3[10] ; int i,n ;
    
        printf("donner n \n"); // tel que n est la taille des 3 tableaux !!
        scanf("%d",&n);
        for (i=0; i<n ; i++)
         {
           printf("donner la valeur %d de T1 \n",i);
           scanf ("%d", &T1[i]) ;
           printf("donner la valeur %d de T2  \n",i);
           scanf ("%d", &T2[i]) ;
           T3 = somme (T1,T2,n);
           for (i=0;i<n;i++)
           printf("la %d valeur de T3 est %d",i,T3[i]);
    
         }
    }
    
    int somme (int A,int B,int N)
    { int i ; int C[10] ;
      for (i=0;i<N;i++)
      C[i] = A[i]+B[i] ;   // 2 erreurs signalées par code blocs : subscribed value is neither array nor pointer 
       }


    merci!
    cordinalement

    -----
    Dernière modification par JPL ; 10/05/2015 à 22h13. Motif: Ajout de la balise Code (#) pour garder l'indentation
    always do what you think you can not do

  2. #2
    Paraboloide_Hyperbolique

    Re : fonction somme de 2 vecteurs en C

    Bonsoir,

    CodeBlocks a raison: dans la fonction "somme", A et B sont des entiers et non de tableaux sur entiers. Il me semble d'ailleurs qu'il y a confusion dans votre code: souhaitez-vous uniquement effectuer la somme de deux entiers dans la fonction "somme" ou y effectuer la somme de deux vecteurs ? Pour le moment, vous faites un mélange des deux. Par ailleurs, la fonction "somme" devrait retourner un entier (return...) ce qu'elle ne fait pas...

    PS: pour afficher du code, utilisez les balises [CODE].

  3. #3
    wafa9CH

    Re : fonction somme de 2 vecteurs en C

    bonsoir , merci de répondre a ma question
    oui je voudrais faire la somme des 2 vecteur
    je suis perdue qu'est ce que je dois ecrire ??

    int somme (int A[],int B[],int N)
    { int i ; int C[10] ;
    for (i=0;i<N;i++)
    C[i] = A[i]+B[i] ;
    always do what you think you can not do

  4. #4
    Jack
    Modérateur

    Re : fonction somme de 2 vecteurs en C

    Citation Envoyé par wafa9CH Voir le message
    je suis perdue qu'est ce que je dois ecrire ??
    Pourquoi n'essaies-tu pas tout simplement?

    de plus code::blocks possède un débogueur qui te permet de suivre tes variables au fur et à mesure de l'exécution des instructions.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : fonction somme de 2 vecteurs en C

    Il y a toutefois un problème avec la valeur de retour, la somme de 2 vecteurs donnant un vecteur et pas un entier.

  7. #6
    wafa9CH

    Re : fonction somme de 2 vecteurs en C

    salut;
    j'ai essayé de modifier le programme


    .
    .
    .
    .
    T3[i] = somme (T1,T2,n);
    for (i=0;i<n;i++)
    printf("la %d valeur de T3 est %d",i,T3[i]);

    }


    }

    int somme (int A[],int B[],int N)
    { int i ; int C[10] ;
    for (i=0;i<N;i++)
    C[i] = A[i]+B[i] ;
    }




    mais excusez moi, pouvez vous m'expliquer pourquoi est ce que vous avez dit que la fonction somme revoie un entier et non pas un vecteur!
    merci
    always do what you think you can not do

  8. #7
    Jack
    Modérateur

    Re : fonction somme de 2 vecteurs en C

    C'est toi qui l'as écrit:
    Code:
    int somme (int A[],int B[],int N)

    La fonction attend donc que tu écrives une ligne : return quelquechose;

  9. #8
    Paraboloide_Hyperbolique

    Re : fonction somme de 2 vecteurs en C

    Bonsoir,

    wafa9CH: je vous recommande de penser calmement à ce que vous voulez que la fonction "somme" fasse.
    Avec le code en l'état actuel, je propose qu'elle effectue le somme de deux composantes de vecteurs.
    Sachant cela, quels sont les arguments nécessaires à la fonction* ? Que doit-elle retourner ?

    *Plusieurs solutions possibles, choisissez-en une et tenez-y vous.

  10. #9
    wafa9CH

    Re : fonction somme de 2 vecteurs en C

    bonsoir ! merci d'avoir répondu a ma question!
    j'ai effectué une petite recherche et j'ai trouvé que les fonctions ne renvoient pas des tableaux! mais on peut utiliser un pointeur sur le 1er élément du tableau
    j'ai modifié mon programme mais mon code blocs bloque des que je clic sur "exécuter"!
    aidez moi svp!!


    voici mon programme :

    Code:
    #include <stdio.h>
    
    #include <stdlib.h>
    
    int somme (int A[], int B[],int C[] ,int N) ;
    
    void main()
    
    { int *T1[10],*T2[10], *T3[10] ; int i,n ;
    
        printf("donner n \n");
    
        scanf("%d",&n);
    
        for (i=0; i<n ; i++)
    
         {
    
           printf("donner la valeur %d de T1 \n",i);
    
           scanf ("%d", *T1[i]) ;
    
           printf("donner la valeur %d de T2  \n",i);
    
           scanf ("%d", *T2[i]) ;  }
    
    somme (T1,T2,T3,n);
    
           for (i=0;i<n;i++)
    
           printf("la %d valeur de T3 est %d",i,T3[i]);
    
         }
    
    int somme (int A[],int B[],int C[],int N)
    
    { int i ;
    
      for (i=0;i<N;i++)
    
      C[i] = A[i]+B[i] ;
    return 0;
       }
    Dernière modification par Jack ; 13/05/2015 à 08h03. Motif: Ajout balises code
    always do what you think you can not do

  11. #10
    Jack
    Modérateur

    Re : fonction somme de 2 vecteurs en C

    C'est la 2ème (et dernière) fois qu'on te rajoute les balises codes. Tu dois penser à les ajouter par toi-même ma prochaine fois, par simple respect pour les gens qui doivent lire ton code pour t'aider.

  12. #11
    Jack
    Modérateur

    Re : fonction somme de 2 vecteurs en C

    Ton code ne va pas du tout:
    - a quoi servent ces variables globales ? : int somme (int A[], int B[],int C[] ,int N) ;

    - pourquoi déclarer des tableaux de pointeurs d'entier? : int *T1[10],*T2[10], *T3[10] ;. Des tableaux d'entiers devraient suffire, et du coup, tu les remplirais aisni : scanf ("%d", &T1[i]) ; (en passant, ta ligne scanf ("%d", *T1[i]) ; devait faire planter le programme car l'étoile était de trop.


    -dans la fonction somme, il est en effet possible de passer les 2 vecteurs à additionner et le résultat. Du coup, à quoi sert de retourner un entier? Tu aurais pu écrire la fonction somme de manière à l'appeler ainsi: T3 =
    somme (T1,T2,n);. C'est tout de même plus naturel, non?

    Dernière modification par Jack ; 13/05/2015 à 08h16.

  13. #12
    Paraboloide_Hyperbolique

    Re : fonction somme de 2 vecteurs en C

    Bonjour,

    Outre les remarques de Jack, je constate que vous ne comprenez pas encore bien l'usage des pointeurs et des tableaux.
    Un tableau est une liste de valeurs contigües en mémoire. Un pointeur est une variable contenant l'adresse d'une autre variable.

    Code:
    int tab[10]; // Tableau de 10 entiers.
    int *p;        // Pointeur vers un entier.
    int *pTab[10]; // Tableau de pointeurs d'entiers.
    Réfléchissez aussi à la structure de votre code: pourquoi deux boucles 'for' imbriquées pour effectuer la somme de deux vecteurs (celle qui apparaît dans la fonction 'main' et celle qui apparait dans la fonction 'somme') ? Une seule devrait suffire.

  14. #13
    Jack
    Modérateur

    Re : fonction somme de 2 vecteurs en C

    Il n'y a pas deux boucles imbriquées. C'est vrai qu'on peut se laisser prendre à première vue.

    Comme quoi une bonne présentation du code est indispensable.

  15. #14
    polo974

    Re : fonction somme de 2 vecteurs en C

    En C, on ne peut pas rendre un tableau en tant que tel, seulement le pointeur sur ce dernier.
    En C, un tableau déclaré localement dans une fonction n'est plus sensé exister quand on en sort.
    (la mémoire qu'il utilise sera ecrasée au prochain appel d'une fonction ayant besoin d'autant de mémoire, bref, ça peut marchouiller au début, mais finir par buguer quand plus personne ne se souvient de ce "détail"....)

    Bref, en C, il vaut mieux passer aussi un pointeur sur un tableau pour le résultat.
    void somme(int * S, const int * A, const int * B, int N)
    ...

    En passant, tester N par rapport à 10 pour éviter les débordements...
    Jusqu'ici tout va bien...

Discussions similaires

  1. Dm geogebra fonction et vecteurs
    Par chacha27210 dans le forum Mathématiques du collège et du lycée
    Réponses: 0
    Dernier message: 30/09/2014, 20h10
  2. La somme de vecteurs
    Par lauren7878 dans le forum Mathématiques du collège et du lycée
    Réponses: 10
    Dernier message: 10/08/2013, 22h20
  3. DM 2nd Fonction;Equations et vecteurs
    Par invite25ca1631 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 15/05/2012, 21h48
  4. Somme de fonction
    Par invite7a999bca dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 29/09/2008, 20h56
  5. Question sur la somme de vecteurs...
    Par invite621a8f3c dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 04/12/2007, 16h29