|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : janvier 2013 Messages : 1 ![]() |
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 :
Code :
Code :
|
||||||
|
|
00
|
|
|
#2 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 614 ![]() |
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(). |
|
|
10
|
|
|
#3 |
|
Membre chevronné
![]() Auditeur informatique Inscription : avril 2009 Messages : 118 ![]() |
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 ! |
|
|
10
|
Copyright © 2000-2013 - www.developpez.com