Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : janvier 2013
    Messages : 1
    Points : 0
    Points
    0

    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 :
    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 :
    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 :
    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
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 223
    Points : 13 072
    Points
    13 072

    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 chevronné
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    avril 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 119
    Points : 765
    Points
    765

    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 !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •