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 :

encore un petit probleme


Sujet :

C

  1. #41
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    1- il faut s'assurer que nombre2 soit différent de 0

    2- il faut faire attention qu'il s'agit de la division entre entiers et que le résultat sera le quotient de la division entière (division euclidienne)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  2. #42
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 50
    Points : 14
    Points
    14
    Par défaut
    merci de ta reponse. j'ai appris de nouvelles chose les tableaux et les pointeur j'ai eu un peu de mal a compprendre mais je pense avoir comprit apres quelque relecture j'ai essaye de mettre tout cela en application mais le resultat est catastrophique pourquoi je sais pas peut etre que je n'ai pas si bien comprid le cours

    main.c
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "commande.c"
     
     
    int main()
    {
      int tableaux[4],i,total;
      for(i = 0,i<4,i++)
      {
        printf("insere le nombre %d:",i);
        scanf("%d",tableaux[i]);
      }
      sommetableaux(tableaux,4,total);
      printf("la somme de tout ces nombre vaut %d",total);
      return 0;
    }
    commade.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    int sommetableaux(int tableau[],int taille,int *pointeur);
    commade.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "commade.h"
     
    int sommetableaux(int tableau[],int taille,int *pointeur)
    {
         int i;
         for(i =0;i<taille;i ++)
               *pointeur += tableau[i];
    }
    message d'erreur

    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
     
    projet\commande.c||In function `sommetableaux':|
    \projet\commande.c|10|warning: control reaches end of non-void function|
    \projet\main.c||In function `main':|
    \projet\main.c|7|warning: left-hand operand of comma expression has no effect|
    \projet\main.c|7|error: syntax error before ')' token|
    \projet\main.c|10|warning: format argument is not a pointer (arg 2)|
    \projet\main.c|6|warning: unused variable `total'|
    \projet\main.c|12|error: syntax error before numeric constant|
    \projet\main.c|12|warning: type defaults to `int' in declaration of `sommetableaux'|
    \projet\main.c|12|warning: data definition has no type or storage class|
    \projet\main.c|13|error: syntax error before string constant|
    lien\Nouveau dossier\projet\main.c|13|warning: type defaults to `int' in declaration of `printf'|
    \projet\main.c|13|error: conflicting types for 'printf'|
    \projet\main.c|13|note: a parameter list with an ellipsis can't match an empty parameter name list declaration|
    \projet\main.c|13|error: conflicting types for 'printf'|
    \projet\main.c|13|note: a parameter list with an ellipsis can't match an empty parameter name list declaration|
    \projet\main.c|13|warning: data definition has no type or storage class|
    ||=== Build finished: 5 errors, 8 warnings ===|
    peut etre que les fautes vous parraisse evidante mais pas pour moi sinon j'avais une dernier question a quoi correspond les deux bibliothèque que j'ai rajoute je les rajoute et je ne sais même pas a quoi cela correspond -.-".
    merci d'avance

  3. #43
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Tu ne fais vraiment pas assez attention:
    -
    projet\commande.c||In function `sommetableaux'
    \projet\commande.c|10|warning: control reaches end of non-void function|
    La fonction sommetableaux() doit retourner un int et il n'y a pas de return ...

    -
    \projet\main.c|7|warning: left-hand operand of comma expression has no effect|
    \projet\main.c|7|error: syntax error before ')' token|
    for(i = 0,i<4,i++) ce ne sont pas des , mais des ; qui servent de séparateur.
    -
    \projet\main.c|10|warning: format argument is not a pointer (arg 2)|
    scanf("%d",tableaux[i]); l'argument doit être une adresse, pas un int : scanf("%d",tableaux+i) ou scanf("%d",&tableaux[i])

    - sommetableaux(tableaux,4,total); la fonction attend un int * or total est un int : sommetableaux(tableaux,4,&total);

    - etc...
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #44
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 50
    Points : 14
    Points
    14
    Par défaut
    merci de ta reponse .je sais que ce site ne doit pas tout faire a ma place mais si tu m'aurais pas aidez j'aurais pas reussie merci mais il reste une erreur ou plutôt deux mais sur la meme ligne.Merci d'avance; Je tien a te remercie car si tu ne serais pas la pour répondre a mes multiple questions e problèmes je ne pense pas que je pourrais apprendre tant de chose alors merci a toi et ok.idriss.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "commade.h"
     
    int sommetableaux(int tableau[],int taille,int *pointeur)
    {
         int i;
         for(i =0;i<taille;i ++)
               *pointeur += tableau[i];
          return *pointeur;
    }

    obj\Debug\commande.o||In function `sommetableaux'
    \projet\commande.c|6|multiple definition of `_sommetableaux'|
    \projet\commande.c|6|first defined here|
    ||=== Build finished: 2 errors, 0 warnings ===|

  5. #45
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    comme l'indique le message d'erreur, tu as défini plusieurs fois cette fonction.

  6. #46
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Points : 683
    Points
    683
    Par défaut
    Je vois que tu passe un pointeur a ta fonction pour stocker le résultat donc autant ne pas faire une fonction qui retourne ce pointeur.

    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
     
    #include <stdio.h>
     
    void sommetableaux( int*, unsigned int, int* );
     
    void sommetableaux( int tableau[], unsigned int taille, int* pointeur )
    {
       unsigned int i;
     
       for ( i = 0; i < taille; ++i )
          *pointeur += tableau[i];
    }
     
    int main ( void )
    {
       int tab[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
       int resultat = 0;
     
       sommetableaux( tab, 10, &resultat );
     
       printf( "Resultat = %d\n", resultat );
     
       return 0;
    }

  7. #47
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 50
    Points : 14
    Points
    14
    Par défaut
    si j'ai bien compris le cours quand on met void devant une fonction quand elle ne renvoie aucune valeur c'est bien cela sinon j'ai pas compris ce que tu m'as dit aura et jeroman je ne vois pas commant j'ai defini deux la fonction j'ai fait un prototype et une fonction ?Je pense que je fais relire TOUT le cours sur le c
    merci d'avance

  8. #48
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Points : 683
    Points
    683
    Par défaut
    Et bien regarde bien mon code. Tu passe a ta fonction une variable int* qui va contenir ton résultat de l'addition de toutes tes cases de ton tableau. Sachant que tu passe un pointeur, donc l'adresse en mémoire où se trouve ta variable, autant ne pas la renvoyer.

    Si tu regarde bien mon code, tu verra que dans le main, je déclare une variable resultat et je passe l'adresse de cette variable à la fonction (&resultat).
    Si tu exécute mon code tu verras qu'il y aura bien le bon résultat dans la variable resultat.

  9. #49
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 50
    Points : 14
    Points
    14
    Par défaut
    d'accord j'ai recopier ton code tout marche bien mais je vaudrais que l'utilisateur puissent entre le nombre donc j'ai fait
    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
     
    #include <stdio.h>
     
    void sommetableaux( int*, unsigned int, int* );
     
    void sommetableaux( int tableau[], unsigned int taille, int* pointeur )
    {
       unsigned int i;
     
       for ( i = 0; i < taille; ++i )
          *pointeur += tableau[i];
    }
     
    int main ( void )
    {
       int tab[10];
       int resultat = 0;
       int i;
       for(i=0,i<10,i++)
       {
       printf("insere le nombre %d :",i);
       scanf("%d",&tab[i]);
    }
     
       sommetableaux( tab, 10, &resultat );
     
       printf( "Resultat = %d\n", resultat );
     
       return 0;
    }
    quand j'ai rajoute for sa ma mit:

    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
    ||In function `main':|
    |19|warning: left-hand operand of comma expression has no effect|
    |19|error: syntax error before ')' token|
    l17|warning: unused variable `resultat'|
    l25|error: syntax error before numeric constant|
    l25|warning: type defaults to `int' in declaration of `sommetableaux'|
    |25|error: conflicting types for 'sommetableaux'|
    |7|error: previous definition of 'sommetableaux' was here|
    |25|warning: data definition has no type or storage class|
    |27|error: syntax error before string constant|
    |27|warning: type defaults to `int' in declaration of `printf'|
    |27|error: conflicting types for 'printf'|
    |27|note: a parameter list with an ellipsis can't match an empty parameter name list declaration|
    |27|error: conflicting types for 'printf'|
    |27|note: a parameter list with an ellipsis can't match an empty parameter name list declaration|
    |27|warning: data definition has no type or storage class|
    ||=== Build finished: 7 errors, 6 warnings ===|
    merci d'avance

  10. #50
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Points : 683
    Points
    683
    Par défaut
    Encore une fois tu as oublié de faire attention a ce que tu écris :

    C'est des ; et pas des , donc cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for( i = 0 ; i < 10 ; ++i )

  11. #51
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 50
    Points : 14
    Points
    14
    Par défaut
    merci de ta reponse je pense que je vais travaille la programmation modulaire les pointeur et les tableaux chacun d'un cote car si j'essaye de mettre tout les chose que je vienne d'apprendre et que sa beuge de tout partout merci a toi pour avoir prit le temps de me répondre

Discussions similaires

  1. Petit problème de fork
    Par osmose22 dans le forum Linux
    Réponses: 7
    Dernier message: 18/03/2007, 21h10
  2. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  3. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19
  4. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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