Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 15/01/2013, 15h07   #1
barzag
Invité de passage
 
Homme
Inscription : 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];
}
barzag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2013, 17h53   #2
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 614
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : septembre 2007
Messages : 4 614
Points : 11 093
Points : 11 093
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().
Obsidian est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/01/2013, 01h26   #3
Ngork
Membre chevronné
 
Homme
Auditeur informatique
Inscription : avril 2009
Messages : 118
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Auditeur informatique
Secteur : Finance

Informations forums :
Inscription : avril 2009
Messages : 118
Points : 650
Points : 650
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 !
Ngork est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h27.


 
 
 
 
Partenaires

Hébergement Web