char c1, tc1[5], *Pc;
int i, ti1[5], *Pi;
double d1, td1[5], *Pd;
Afficher l'adresse de la zone mémoire associée à chaque variable, et expliquer
les valeurs obtenues.
Avec ces déclarations, expliquez les affichages obtenus par les instructions
suivantes:
for( i = 0; i < 5; i++) ti1[i] = 100+i;
for( i = 0; i < 4; i++) printf( "%4d", ti1[i] );
Pi = ti1;
printf("\n"); for( i=0; i < 4; i++) printf( "%4d", Pi[i] );
printf("\n"); for( Pi=&ti1[4]; Pi!=ti1; Pi--) printf(" %x:%4d",Pi,*Pi);
Les instructions ci-dessous permettent d'afficher les diviseurs d'un entier
positif
int n, d, * pn, * pd;
n=1234; d=2; printf("\nDiviseurs de %d:\n", n);
for( d=2; d*d < n ; d++) if( n % d == 0 ) printf("\n%5d%5d", d, n/d);
if( d*d == n ) printf("\n%5d", d);
Reprendre ces instructions en supprimant toute utilisation de n et de
d, mais en utilisant pn (resp pd) variable pointeur sur
la valeur de n resp d). Ne pas oublier que pn
(resp pd) doit recevoir une valeur correcte.
Passage indirect de paramètre
Les sous-programmes demandés fournissent leur(s) résultat(s) par les
paramètres qui leurs sont communiqués.
Ecrire le sous-programme soltrinome qui recoit les trois coefficients
définissant un trinôme du second degré, détermine l'existence de racines
réelles et fournit ces racines. Un prototype peut être:
int soltrinome( double a, double b, double c, double *pr1, double *pr2);
Ecrire le sous-programme minmax qui fournit le minimum et le maximum d'un
tableau de réels non vide (minmax reçoit un tableau et le nombre de valeurs
utilisées dans ce dernier).
Reprendre le calcul de minimum et maximum quand on utilise le type AgrTab
(voir feuille 4) pour coder des suites de nombres.
Pointeurs et sous-programmes de recherche
Ecrire deux sous-programmes de recherche d'une valeur dans un tableau, et
une utilisation de ceux-ci. void position1( double td[], int n, double xd, int * p_pos);
/* Recherche de xd parmi les n premiers éléments du tableau de
réels td. Renvoie:
*p_pos = -1 si la valeur de xd n'est pas dans le tableau,
ou
*p_pos = l'indice d'un élément du tableau égal à xd .
*/
double * position2( double td[], int n, double xd);
/* Recherche de xd parmi les n premiers éléments du tableau de
réels td. Renvoie:
NULL si la valeur xd n'est pas un des n premiers éléments
de td
ou l'adresse d'un élément du tableau égal à xd dans le
cas contraire.