e-Babillard - plateforme pédagogique interactive
Pensez à mettre un avatar personnel Bienvenue, Invité. Veuillez vous connecter ou vous enregistrer.
20 Avril 2024 à 15:02:01

Connexion avec identifiant, mot de passe et durée de la session
Recherche:     Recherche +
* Flux RSS www.jpdelx.com Accueil Aide Identifiez-vous Enregistrez-vous
+  e-Babillard - plateforme pédagogique interactive
|-+  Ressources pédagogiques communes concernant...
| |-+  Langage C
| | |-+  Sujet: [Fonction, tableau & pointeur] Erreur non Trouvée
« sujet précédent | | sujet suivant »
Pages: [1] Imprimer
Auteur Sujet: [Fonction, tableau & pointeur] Erreur non Trouvée  (Lu 2359 fois)
frifri
Invité


Courriel
[Fonction, tableau & pointeur] Erreur non Trouvée
« le: 01 Juin 2008 à 16:37:56 »

Monsieur,

J'etait en train de m'entrainer sur les tableau et autres pointeurs.
Je fait donc un petit exercice trouvé sur internet.

Voici donc Mon code :

Code:
// Somme de membres du tableau.

#include <stdio.h>
#include <stdlib.h>

long sommeTableau(long tableau[], long tailleTableau);

int main()
{
    long somme;
    long tableau[4] = {1,2,3,4};

    somme = sommeTableau(tableau, 4);

    printf("%d", somme);

    return 0;
}

long sommeTableau(long tableau[], long tailleTableau)
{

    long resultat;
    int i;

    for(i = 0; i < tailleTableau; i++)
    {

        resultat += *(tableau+i);

    }

    return resultat;

}


Cependant, je n'ai pas de problème à la compilation, mais j'obtient un
r?sultat farfelus.
Pourriez vous m'aider à Je ne comprend pas mon erreur.

Merci d'avance.
Journalisée
jpdelx
Administrator
Hero Member
*****
Hors ligne Hors ligne

Sexe: Homme
Messages: 13086


Il n'y a pas de questions idiotes...


WWW
Erreur non Trouvée
« Répondre #1 le: 01 Juin 2008 à 16:46:25 »

Françis

L'erreur provient du simple fait que la variable locale servant à faire
le cumul ( i.e. la somme ) dans la fonction sommeTableau() n'a pas
été initialisée à 0 au début. Donc le calcul se fait au départ avec une
valeur parasite ( du garbage ) car le C n'initialise pas les variables
automatiquement à zéro.

Il suffit donc de faire :
Code:
long resultat=0;

Pour information, il n'y a aucun intérêt à utiliser une variable locale somme dans main().

Il vaut mieux aussi utiliser le spécificateur de format %ld au lieu de %d.

Code:
// Somme de membres du tableau.

#include <stdio.h>
#include <stdlib.h>

long sommeTableau(long tableau[], long tailleTableau);

int main(){
    long tableau[4] = {1,2,3,4};
    printf("%ld\n", sommeTableau(tableau,4));
    system("Pause");
    return 0;
}

long sommeTableau(long tableau[], long tailleTableau){
    long resultat=0;
    int i;
    for(i = 0; i < tailleTableau; i++)resultat += *(tableau+i);
    return resultat;
}

@lpf





* somme_tableau.jpg (13.4 KB - Téléchargé 38 fois.)
Journalisée

J.Phil. DELCROIX
www.jpdelx.com

Merci de rédiger vos messages dans un français compréhensible par tous !
frifri
Invité


Courriel
Erreur non Trouvée
« Répondre #2 le: 01 Juin 2008 à 16:50:54 »

En effet, maintenant tout marche parfaitement !

Merci beaucoup Smiley
Journalisée
Pages: [1] Imprimer 
e-Babillard - plateforme pédagogique interactive  |  Ressources pédagogiques communes concernant...  |  Langage C  |  Sujet: [Fonction, tableau & pointeur] Erreur non Trouvée « sujet précédent | | sujet suivant »
Aller à:  

Propulsé par MySQL Propulsé par PHP e-Babillard - plateforme pédagogique interactive | Propulsé par SMF 1.0.6 modifié par jpdelx.
© 2001-2005, Lewis Media. Tous droits réservés.
XHTML 1.0 Transitionnel valide ! CSS valide !
Page générée en 0.164 secondes avec 20 requêtes.