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 :

Demande d'aide sur mon code en C


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Demande d'aide sur mon code en C
    tout d'abord bonjour,

    Alors voila j'ai apris les bases theoriques du language C, je passe donc a la pratique.

    Voici mon code qui consiste a créer un tableau de 4 valeurs puis d'aditionner les valeurs de ce tableau.

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int sommeTableau(int tableau[], int tailleTableau);
     
    int main(int argc, char *argv[])
     
    {
        int tableau[4]={15, 15, 15, 15};
     
        sommeTableau(tableau, 4);
     
       return 0;
    }
     
        int sommeTableau(int tableau[], int tailleTableau)
        {
            int sommeTableau=tableau[0]+tableau[1]+tableau[2]+tableau[3];
     
            printf("Le resultat est %d\n", sommeTableau);
        }

    Ce petit programme marche mais j'aimerais avoir votre avis sur celui ci

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Ton code fonctionne avec un tableau de 4 cases, mais si je te donne un tableau de 500 cases comment tu vas faire ?
    Tu as passé l'argument tailleTableau à ta fonction, hé bien il faut t'en servir pour faire une boucle et additionner tous les éléments de ton tableau

    Bonne chance !

    PS : Il y a des balises de code. Le symbole # juste au dessus de là où tu écris
    Plus tu pédales moins fort, moins t'avances plus vite.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ta reponce je vais reflechir a ca.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Salut,

    Le C est un exellent language à apprendre (Il est très ludique).

    Si tu veux, tu pourrais déjà faire un sorte d'entrée les valeurs manuellement( Scanf)...

    Tu pourrais essayer de faire une allocation dynamique. C'est à dire pouvoir encoder 3, 4, 20, 50 nombres et par après faire la somme de ceux ci via une boucle...

    Enfin, voilà je te propose quelque idée qui te permettrons d'utilisé la puissance des tableaus

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par tekos22 Voir le message
    tout d'abord bonjour,

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int sommeTableau(int tableau[], int tailleTableau);
     
    int main(int argc, char *argv[])
     
    {
        int tableau[4]={15, 15, 15, 15};
     
        sommeTableau(tableau, 4);
     
       return 0;
    }
     
        int sommeTableau(int tableau[], int tailleTableau)
        {
            int sommeTableau=tableau[0]+tableau[1]+tableau[2]+tableau[3];
     
            printf("Le resultat est %d\n", sommeTableau);
        }

    Ce petit programme marche mais j'aimerais avoir votre avis sur celui ci

    Merci d'avance
    Je relève quand même quelques erreur...

    Ton programme se compile?? Car tu déclare ta fonction"SommeTableau" de type Integer, seulement tu ne retourne aucune valeur à la fin de ta fonction...

    Pour ce type d'utilisation, tu devrais soit utiliser le type void ou alors voir ton code comme ceci :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int sommeTableau(int tableau[], int tailleTableau);
     
    int main(int argc, char *argv[])
     
    {
        int tableau[4];
        int Resultat = 0;
     
        Printf("\n Entrer le premier nombre : ");
        scanf("%ld", &tableau[0]);
        Printf("\n Entrer le deuxieme nombre : ");
        scanf("%ld", &tableau[1]);
        Printf("\n Entrer le troisieme nombre : ");
        scanf("%ld", &tableau[2]);
        Printf("\n Entrer le quatrieme nombre : ");
        scanf("%ld", &tableau[3]);
     
        Resultat = sommeTableau(tableau); /* J'envoie le resultat dans une variable */
     
        printf("La somme des nombre est : %ld", Resultat); /* J'affiche le résultat */
        system("pause");
     
       return 0;
    }
     
        int sommeTableau(int tableau[])
        {
            int Resultat=tableau[0]+tableau[1]+tableau[2]+tableau[3];
     
            return Resultat;
        }
    PS: Je n'ai pas tester la compilation, il peut y avoir des erreur...
    Je travaille maintenant en c# et sa fait pas loin de 1 an que je n'ai plus toucher de C ^^

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par dogua Voir le message
    Je relève quand même quelques erreur...

    Ton programme se compile?? Car tu déclare ta fonction"SommeTableau" de type Integer, seulement tu ne retourne aucune valeur à la fin de ta fonction...
    Oui, ca se compile parfaitement, c'est juste qu'il y a quelque warning. En gros, le compilateur insere un return "quelquechose" et l'avertie.

    Mais bon, si le compilateur n'est pas bien parametrer, il se peut qu'il ne voit pas les warning. OU alors, il les ignore carrement.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut getch();
    bonjour,
    à mon avis ce style d'écriture n'est pas très catholique...
    mais ça marche ... il faut simplement rajouter après le printf un getch();
    en effet le prog n'a pas le temps d'afficher qu'il est déjà fini.

    pas catho pourquoi ?
    1) les arguments à la fonction main ne sont pas nécessaire
    2) lorsque tu rappel le nom de la fonction pour la variable de travail, on a l'impression qu'on va s'offrir un voyage recurcif
    tu devrais utiliser un autre nom de variable

    4) l'autre warning est l'argument "taille" qui n'est pas utilisé, à ce sujet, dogua a raison, tu pourrais utiliser une boucle pour faire l'addition

    je te propose la fonction ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int sommeTableau (int tableau[], int taille)
    {   int x, somme=0;
     
        for (x=0; x<taille; x++)
            somme += tableau[x];
     
        printf ("Le resultat est %d\n",somme);
        getch();
    }

  8. #8
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Citation Envoyé par cagne Voir le message
    un getch();
    en effet le prog n'a pas le temps d'afficher qu'il est déjà fini.
    Autant faire du standard (et du portable) et utiliser getchar();

    @ cagne :
    - Pour une bonne présentation sur le forum, il faut poster le code entre balises codes : comme sur cet émoticône .
    - ta fonction sommeTableau () que tu vient de poster est de type int, elle doit donc retourner un int et non se comporter comme une procédure (void). Il faut bien faire la distinction entre fonctions (qui retournent une valeur) et procédures (dont on ne se soucie pas de la valeur retournée).

    Pour t'aider à voir la différence :
    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
    #include <stdio.h>
    #include <stdlib.h>
    #define SIZE 4
     
    int sommeTab(int*, int);
    void affichSomme (int*, int);
    void pause (void);
     
    int main (void) /* Tu n'utilises pas les paramètres donc void */
    {
        int tableau [SIZE]={15, 15, 15, 15}, somme=0 ;
        somme = sommeTab(tableau, SIZE); /* On affecte la valeur retournée par sommeTab à somme */
        printf ("resultat envoye par la fonction sommeTableau : %d\n", somme);
        /* Note : sans l'affectation, il était possible d'afficher sommeTab (tableau, SIZE) directement dans le printf */
        printf ("utilisation de la procedure :\n");
        affichSomme (tableau, SIZE); /* Appel de la procédure affichSomme */
        pause (); /* Appel de la procédure pause */
        return 0;
    }
     
    int sommeTab(int tableau[], int tailleTableau)
    {
        int sommeTableau = 0, i=0;
        for (i=0 ; i<tailleTableau ; i++) /* Pour i de 0 jusqu'à la taille du tableau (avec un pas de 1), faire ... */
            sommeTableau += tableau[i]; /* sommeTableau = sommeTableau + tableau [i] */
        return sommeTableau; /* On retourne la valeur sommeTableau de type int */
    }
     
    void affichSomme (int tableau[], int tailleTableau)
    {
        int sommeTableau = 0, i=0; /* évitez de donner les mêmes noms aux variables et aux fonctions */
        for (i=0 ; i<tailleTableau ; i++) /* Pour i de 0 jusqu'à la taille du tableau (avec un pas de 1), faire ... */
            sommeTableau += tableau[i]; /* sommeTableau = sommeTableau + tableau [i] */
        printf ("La somme est de : %d\n", sommeTableau);
    }
     
    void pause (void) /* procédure portable pour faire une pause */
    {
        printf ("Appuyez sur ENTER pour continuer ...\n");
        getchar ();
    }

Discussions similaires

  1. Demande d'aide sur un code JAVA
    Par schine dans le forum Langage
    Réponses: 6
    Dernier message: 02/06/2009, 21h43
  2. demande d'aide sur un code de KSH
    Par adil.N dans le forum Linux
    Réponses: 1
    Dernier message: 08/05/2008, 21h42
  3. Demande d'aide sur mon code
    Par b.soufiane dans le forum C++
    Réponses: 6
    Dernier message: 07/12/2007, 16h36
  4. Aide sur mon Code !
    Par b.soufiane dans le forum C
    Réponses: 10
    Dernier message: 07/12/2007, 12h38
  5. Demande d'aide sur un code source
    Par Soward dans le forum SDL
    Réponses: 3
    Dernier message: 13/06/2007, 20h22

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