Allocation dynamique en c
Fermé
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
-
7 mars 2009 à 04:24
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 mars 2009 à 10:52
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 mars 2009 à 10:52
A voir également:
- Allocation dynamique en c
- Tableau croisé dynamique - Guide
- Liste déroulante dynamique excel - Guide
- Liste déroulante dynamique en cascade excel - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
- Sommaire dynamique word - Guide
2 réponses
tatou_38
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
121
7 mars 2009 à 07:06
7 mars 2009 à 07:06
*p = 1;
*(p+1) = 10;
...
*(p+5) = -3;
et ensuite tu utilises une boucle for pour trouver le max :
j = 0;
for ( i = 1 ; i < 6 ; i++ ) {
if (*(p+i) > *p) j = i;
}
le max est alors *(p+j)
*(p+1) = 10;
...
*(p+5) = -3;
et ensuite tu utilises une boucle for pour trouver le max :
j = 0;
for ( i = 1 ; i < 6 ; i++ ) {
if (*(p+i) > *p) j = i;
}
le max est alors *(p+j)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
7 mars 2009 à 10:23
7 mars 2009 à 10:23
Salut,
Pourquoi utiliser un tableau dynamique alors que tu connais la taille à la compilation ?
Un simple : int p[6]; ferait parfaitement l'affaire.
Pour rechercher le maximum :
Cdlt
Pourquoi utiliser un tableau dynamique alors que tu connais la taille à la compilation ?
Un simple : int p[6]; ferait parfaitement l'affaire.
Pour rechercher le maximum :
int max=p[0]; for(int i=1;i<6;i++) if(p[i] > max) max=p[i]; printf("Le max est %d\n",max);
Cdlt
7 mars 2009 à 10:27
Ton algorithme est faux.
Tu voulais sûrement mettre :
Et n'oublie pas de commencer ta boucle for à 1 et non à 0.
Cdlt
7 mars 2009 à 10:43
Je ne l'ai pas testé, mais je pense être dans le vrai :
- Initialement je considère que le premier entier est le plus grand, le résultat est donc j=0.
- après je compare les éléments, donc seulement à partir du deuxième, et change la valeur de j si l'élément testé est plus grand que le premier.
Effectivement, mon code est plus complexe à comprendre, mais plus efficace (tu fais une itération de moins !)
7 mars 2009 à 10:52
Ben t'aurais dû tester car ton algorithme est faux ;-).
- Initialement je considère que le premier entier est le plus grand, le résultat est donc j=0.
D'accord dans ce cas, je comprends l'algorithme que tu voulais faire et je confirme ce que j'ai dit lors de mon premier message : il faut comparer avec : if ( *(p+i) > *(p+j)) et non comparer *p.
Et effectivement dans ce cas, tu peux commencer à 1. C'est d'ailleurs l'algorithme que j'ai utilisé dans mon seconde post.