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 :

Afficher le contenu d'un tableau


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Afficher le contenu d'un tableau
    bonjour:
    voila le probléme :ecrire la fonction ECRIRE_TAB a deux paramétres TAB et N,qui affiche les composantes du tableau du type int!
    voila mon code qui ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include<stdio.h>
    main()
          void ECRIRE_TAB(int *TAB, int N)
          {
             for(I = 0; I < N; I++)
             {
               printf("%3d",*(TAB));
        TAB++;
        N--;
        }
      printf("\n");
      getch();
          }
    merci pour tt aide


    Modération par Hdd34
    Merci d'utiliser les balises [code] !


  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Je ne vois pas la difficulté, mais j'ai pû voir 2 erreur vraiment grave dans ton code
    1. Pour une boucle for comme dans cet exemple, declare et initialise une variable compteur au préalable, ca tournera nettement mieux.
    2. Le must, je ne vois pas pourquoi tu décrémente N ! Faut surtout pas y toucher sinon c'est normal que ca foire.
    3. Faut tout revoir mon cher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void ECRIRE_TAB (int * TAB, int N)
    {
       int i = 0;
     
       for (i = 0; i < N; i++)
       {
          printf ("%d\n", TAB [i]);
       }
    }

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    bonjour
    merci davoir lu mon message;mais ce né pas ça le probléme.
    le probléme reside lors de la compilation et lexécution:
    primo:il me dit ke :
    C:\My Documents\ex11.c In function `main':
    C:\My Documents\ex11.c syntax error before '{' token
    et secondo il se s'exécute pas!!
    sil ya plus d'aide je serais tré reconnaissante

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 70
    Points : 34
    Points
    34
    Par défaut
    Deux vilaines erreurs selon moi :

    - Comme l'a dit CSoldier, tu n'initialises pas ton I et au niveau de "l'algorithme", décrémenter N c'est n'importe quoi.

    - Sors ta fonction ECRIRE du main, et n'oublies pas les accolades du main, c'est aussi une fonction. D'où ton erreur de compilation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    main()
    {
       int tab[3]={1, 2, 3};
       ECRIRE_TAB(tab, 3);
    }
    Quelque chose de cette forme là. Les puristes diront qu'il manque quelque chose, mais ça fonctionne très bien.

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par hayam_kin
    bonjour
    merci davoir lu mon message;mais ce né pas ça le probléme.
    le probléme reside lors de la compilation et lexécution:
    primo:il me dit ke :
    C:\My Documents\ex11.c In function `main':
    C:\My Documents\ex11.c syntax error before '{' token
    et secondo il se s'exécute pas!!
    sil ya plus d'aide je serais tré reconnaissante
    Ok désolé j'avais pas fait attention au début, erreur monumentale, il faut revoir tout ton apprentissage du C là

    Il faut définir une fonction main pas seulement en écrivant
    cette fonction étant l'entrée du programme, voici un main minimum:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int main (void)
    {
       return EXIT_SUCCESS;
    }
    main, dans lequel tu déclares, initialise un tableau static ou dynamique c'est toi qui vois puis tu appels ta fonction d'affichage !

    voici mon code:
    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>
    #include <stdlib.h>
     
     
    void ECRIRE_TAB (int * TAB, int N)
    {
       int i = 0;
     
       for (i = 0; i < N; i++)
       {
          printf ("%d\n", TAB [i]);
       }
    }
     
     
    int main (void)
    {
       int i = 0;
       int N = 5;
       int * TAB = NULL;
     
     
       TAB = malloc (N * sizeof (int));
     
       if (! TAB)
       {
          fprintf (stderr, "Erreur ... malloc !\n");
          exit (EXIT_FAILURE);
       }
     
     
       for (i = 0; i < N; i++)
       {
          TAB [i] = i + 1;
       }
     
     
       ECRIRE_TAB (TAB, N);
       free (TAB);
     
     
       return EXIT_SUCCESS;
    }

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par hayam_kin
    voila le probléme :ecrire la fonction ECRIRE_TAB a deux paramétres TAB et N,qui affiche les composantes du tableau du type int!
    voila mon code qui ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include<stdio.h>
    main()
          void ECRIRE_TAB(int *TAB, int N)
          {
             for(I = 0; I < N; I++)
             {
               printf("%3d",*(TAB));
        TAB++;
        N--;
        }
      printf("\n");
      getch();
          }
    merci pour tt aide
    En C standard, on a pas le droit de définir une fonction dans une autre fonction.

    Commence déjà par sortir par fonction de main(). Ensuite, il faut définir les variables, appeler la fonction... Tu as quoi comme formation en informatique ? et en C ?

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 119
    Points : 106
    Points
    106
    Par défaut
    dans ton printf, soir *(tab + i) ou tab[i]

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par hayam_kin
    bonjour:
    voila le probléme :ecrire la fonction ECRIRE_TAB a deux paramétres TAB et N,qui affiche les composantes du tableau du type int!
    voila mon code qui ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include<stdio.h>
    main()
          void ECRIRE_TAB(int *TAB, int N)
          {
             for(I = 0; I < N; I++)
             {
               printf("%3d",*(TAB));
        TAB++;
        N--;
        }
      printf("\n");
      getch();
          }
    merci pour tt aide

    Bonjour,
    Désolé mais ton programme n'a ni queu ni tête. Je commence par sa fin ce qui est pas mieux:
    getch() est une fonction de la librairie conio.h que t'as pas inclut, tu peux utiliser getchar() qui est dans stdio.h (de toute façon c'est pas obligatoire pour ton code)
    T'as défini ta fonction ECRIRE_TAB() à l'intérieur de main(): au fait y a deux méthodes pour faire, ou bien tu définit ta fonction avant main() ou après main() mais en ayant mis le prototype de la fonction avant, une 3ème méthode est de mettre dans un .h que l'on inclut, après tu fais appel à ta fonction dans l'endroit désiré dans main()
    main(): le c90 standard tolère cette forme, mais aucunement le c99, main() doit être de type entier càd int main(), et par conséquent elle doit retourner un entier au système d'exploitation.
    En revenant à ta fonction ECRIRE_TAB(), la décrémentation de N n'est pas justifiée, erroné même.. TAB++ est une instruction de plus, puisque tu peux l'omettre en remplaçant *TAB par TAB[I] dans printf().
    Sur ce bon courage

  9. #9
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par badman_nx
    main(): le c90 standard tolère cette forme, mais aucunement le c99, main() doit être de type entier càd int main(), et par conséquent elle doit retourner un entier au système d'exploitation.
    Euh, non en C90 tu dois bien ecrire int main(void)

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Skyrunner
    Euh, non en C90 tu dois bien ecrire int main(void)
    Pas obligé. Les formes admises sont :

    Pré-ANSI (aka K&R) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    main()
    int main()
    C90 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    main()
    int main()
    int main (void)
    main (void)
    C99 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int main()
    int main (void)
    sans mentionner les formes avec paramètres...

Discussions similaires

  1. Afficher le contenu d'un tableau
    Par jcaspar dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/02/2007, 16h46
  2. Réponses: 2
    Dernier message: 31/01/2007, 09h45
  3. Afficher le contenu d'un tableau
    Par Laurent149 dans le forum Pascal
    Réponses: 2
    Dernier message: 03/11/2006, 17h11
  4. Réponses: 3
    Dernier message: 03/07/2006, 13h45
  5. [Tableaux] afficher le contenu d'un tableau php
    Par moons dans le forum Langage
    Réponses: 9
    Dernier message: 08/02/2006, 15h12

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