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 :

Petit problème de débutant avec les tableaux


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Petit problème de débutant avec les tableaux
    Bonjour tout le monde,
    Je viens de créer un programme qui lit les éléments d'un tableau, calcule leur somme, et détermine leur min et max
    Voici l'algorithme:
    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
    #include <stdio.h>
    #define TMax 20
    main()
    {
    	int i=0,T[i],N,max,min,imax,imin,som=0;
    	//Détérmination de la taille du tableau
    	do
    		{
    			printf("Veuillez entrer la taille du tableau\n");
    			scanf("%d",&N);
    		}
    	while (N<0||N>TMax);
    	//Écriture des éléments du tableau
    	for (i=0;i<N;i++)
    		{
    			printf("Veuillez donner le %d eme élément\n",i);
    			scanf("%d",&T[i]);
    		}
    	//Calcul de la somme
    	for (i=0;i<N;i++);
    		{
    			som=som+T[i];
    		}
    	printf("La somme est: %d\n",som);
    	//Détérmination du min et du max
    	for (i=0;i<N;i++)
    		{
    			min=max=T[0];
    			if (T[i]>max) 
    				{
    					max=T[i];
    					imax=i;
    				}
    			if (T[i]<min) 
    				{
    					min=T[i];
    					imin=i;
    				}
    		}
    	printf("Le max est: %d et son indice est: %d\n",max,imax);
    	printf("Le min est: %d et son indice est: %d\n",min,imin);
    return(0);
    }
    Mais le résultat est un peu bizarre
    Regardez un peu:

    Le compilateur me donne aussi une alerte disant: " warning return type defaults to 'int' "
    Quelle est mon erreur au juste?
    Et merci d'avence

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    La déclaration de T devrait avoir la taille TMax et non pas i.

    De plus, main() doit être déclarée ainsi, et retourner un int:
    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.

  3. #3
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    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 078
    Points : 2 334
    Points
    2 334
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	//Calcul de la somme
    	for (i=0;i<N;i++);
    		{
    			som=som+T[i];
    		}
    Enleve aussi le ; a la fin du for.

    Pour info

    revient a ecrire

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

    Ton code peut s'ecrire de la maniere suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        //Calcul de la somme
        for (i=0;i<N;i++)
            som += T[i];

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci les amis,
    Mais reste encore l'indice du min qui me donne toujours un nombre astronomique 134520820
    Que faut-il faire dans ce cas?

  5. #5
    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
    Je pense que ton problème doit venir de là :

    Tu déclares un tableau de 0 cases ... lol
    Plus tu pédales moins fort, moins t'avances plus vite.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Oui, je l'ai déjà dit.
    Et en plus, ça ne compile qu'en C99.

    gcc est passé à "C99 par défaut" ou quoi?
    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
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Non j'ai corrigé mais le problème persiste encore

  8. #8
    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
    Essaye de sortir "min=max=T[0];" de ta boucle ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (i=0;i<N;i++)
        min=max=T[0];
    @Médinoc : Ah oui j'avais pas vu
    Chez moi GCC compile en C99 par défaut
    Plus tu pédales moins fort, moins t'avances plus vite.

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Qu'est-ce que ça veut dire C99? Est-ce que ça a un rapport avec le fait que je travaille sous Ubuntu ou quoi? Si oui, que faire?
    Soyez gentils avec moi svp je ne suis qu'un débutant

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    C99 est le "nouveau" standard du C, qui notamment introduit les "Variable-Length Arrays": Des tableaux donc la taille n'a pas besoin d'être connue à la compilation.

    Malheureusement, ça engendre énormément de confusion, et on se retrouve facilement (comme ici) avec des tableaux qui ont une mauvaise taille.
    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.

  11. #11
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    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 078
    Points : 2 334
    Points
    2 334
    Par défaut
    Repost nous ton code, car chez moi (apres plusieurs modification) cela marche sans probleme.

    Donc, il y a quelque chose qui ne va pas.

Discussions similaires

  1. [Tableaux] Problème de syntaxe avec les tableaux et include
    Par L'aigle de Carthage dans le forum Langage
    Réponses: 3
    Dernier message: 12/03/2008, 10h41
  2. Problème de débutant dans les tableaux
    Par mat1450 dans le forum C++
    Réponses: 8
    Dernier message: 17/08/2007, 19h09
  3. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46
  4. [Débutant] Problèmes avec les tableaux.
    Par Lwq dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2005, 12h54

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