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 :

Programmation C - Pointeurs et tableaux


Sujet :

C

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Programmation C - Pointeurs et tableaux
    Bonjour à tous,

    Je suis novice en programmation et je souhaiterai être aiguillé.
    Voila j'ai un problème à résoudre qui est le suivant :

    "Ecrire un programme qui lit deux tableaux d'entiers A et B et leurs dimensions N et M au clavier et qui ajoute les éléments de B à la fin de A.
    Utiliser deux pointeurs PA et PB pour le transfert et afficher le tableau résultant C."


    Merci de m'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
    main()
    {
        int tableau A, tableau B;
        int N, M;
        int PA, PB;
    }
    MàJ 1 : ma progression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    main()
    {
        int tableau A, tableau B;
        int N, M;
        int PA, PB;
    }
    {
        printf ("Dimension du tableau A");
        scanf("%d", &N );
    }
    MàJ 2 :

    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
    #include <stdio.h>
    main()
    {
     
        int N, M;
        int PA, PB;
     
        printf ("Dimension du tableau A");
        scanf("%d", &N );
     
        printf("Entrer les éléments de A");
        printf("Dimension du tableau B");
        scanf("%d", &M );
        int tableau_A[N];
    }

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Bonjour et bienvenue,

    Il y a de l'idée dans ce que tu as écrit et ton troisième code compilerait correctement… en C99 (en mettant quand même les bons types à la fonction main, parce que c'est la moindre des choses).

    Cependant, cette manière de faire utilise les VLA et les déclarations de variables mélangées avec le code et je ne pense pas que ce soit ce que veuillent tes professeurs.

    Je pense qu'il veulent que tu utilises malloc() pour réserver dynamiquement de la mémoire à l'exécution, après avoir fait saisir à l'utilisateur la taille de ses tableaux. Cette fonction va alors te réserver de l'espace mémoire et te renvoyer un pointeur vers le début de celui-ci. Tu répètes l'opération pour chacun des tableaux A et B et tu stockes lesdits pointeurs dans PA et PB. Dès lors, tu pourras indexer ces pointeurs directement avec des crochets comme si tu avais déclaré des tableaux ordinaires.

    N'oublie pas, en fin de programme, de libérer les zones allouées avec free().

  3. #3
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut Bonjour !
    Ton code est encore très incomplet et je partage l'avis d'Obsidian quant à la réservation dynamique de la mémoire par malloc plutôt qu'une réservation sur la pile.
    En effet, hors des considérations de formes, si les dimensions N et M sont très grandes et ta pile limitée, le programme plantera, alors qu'une gestion dynamique te permettra de réserver des espaces bien plus importants de mémoire et de vérifier leur bonne allocation !

    Maintenant, sans t'écrire le code, sinon il n'y a plus d'intérêt à l'exercice, je pense que tu devrais te faire un petit organigramme ou a minima un découpage des tâches :

    -> déclaration des variables imposées (A, B, C, N, M, PA et PB)

    -> entrée dimension N du tableau A : (fonction scanf)
    -> allocation mémoire du tableau A : (fonction malloc) vérifier retour
    -> boucle d'entrée des valeurs du tableau A : (fonction scanf dans une boucle for ou while)

    -> entrée dimension M du tableau B : (fonction scanf)
    -> allocation mémoire du tableau B : (fonction malloc) vérifier retour
    -> boucle d'entrée des valeurs du tableau B : (fonction scanf dans une boucle for ou while)

    -> allocation d'un tableau C de dimension N+M : (fonction malloc) vérifier retour
    -> boucle de copie des N éléments de A vers C puis des M éléments de B vers &C[N] : (dans une boucle for ou while) méthode imposée : utiliser les deux pointeurs PA et PB

    -> afficher C : (fonction printf dans une boucle for ou while)

    Quand tu as découpé tes tâches, il devient aisé de remplacer chacune d'elles par un peu de code simple, et si une tâche te semble encore trop compliquée (par exemple la boucle de copie qui mériterait sûrement d'être détaillée), tu la redécoupes !

    Bon courage !

Discussions similaires

  1. Programme voiture pointeur et tableaux
    Par lilp1 dans le forum Débuter
    Réponses: 6
    Dernier message: 07/11/2010, 17h05
  2. Réponses: 27
    Dernier message: 24/05/2007, 23h29
  3. Pointeurs et tableaux
    Par sebdu94 dans le forum C
    Réponses: 4
    Dernier message: 22/03/2007, 16h27
  4. pointeurs et tableaux
    Par gauguin dans le forum C
    Réponses: 8
    Dernier message: 07/02/2007, 23h25
  5. Réponses: 12
    Dernier message: 03/01/2006, 17h23

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