|
|
|
|
Bonjour,
Etantdonné débutant en langage C, permettez moi S.V.P de vous adresser mon petit probléme que je n'arrive à comprendre la réponse:
l'ennoncé de l'exercie:
Écrire une fonction qui ne renvoie aucune valeur et qui détermine la valeur maximale et la valeur minimale d’un tableau d’entiers (à un indice) de taille quelconque. Il faudra donc prévoir 4 arguments : le tableau, sa dimension, le maximum et le minimum. Écrire un petit programme d’essai.
Réponse ( que je n'arrive pas à comprendre):
void maxmin (int[], int n, int * admax, int * admin)
{
int i, max, min;
max = t[0];
min = t[0];
for (i = 1; i < n; i++)
{ if (t[i] > max) max = t[i];
if (t[i] < min) min = t[i];
}
*admax = max;
*admin = min;
}
#include <stdio.h>
int main (void)
{
void maxmin (int t[], int n, int * a, int * b);
int t[8] = {2, 5, 7, 2, 9, 3, 9, 4};
int max, min;
maxmin (t, 8, &max, &min);
printf ("valeur maxi : %d\n", max);
printf ("valeur mini : %d", min);
return 0;
}
Configuration: Windows XP Internet Explorer 6.0
Void minmax(long tab[], long i, long *mi, long *ma);
|
Salut,
#include<stdio.h>
#include<stdlib.h>
void maxmin (long *t, long n, long max, long min);
int main ()
{
long i, n;
long *t;
/* on initialise max à la valeur plus petite
* et min à la valeur plus grande */
long max = -(long) ((unsigned long) ~0 >> 1) - 1;
long min = (long) ((unsigned long) ~0 >> 1);
printf ("Entrez le nombre d'éléments : ");
scanf ("%ld", &n);
t = (long *) malloc (sizeof (long) * n);
for (i = 0; i < n; ++i){
printf ("Elément %ld : ", i + 1);
scanf ("%ld", &t[i]);
}
maxmin (t, n, min, max);
return 0;
}
void maxmin (long *t, long n, long min, long max)
{
long i;
for (i = 0; i < n; ++i){
if (t[i] > max)
max = t[i];
if (t[i] < min)
min = t[i];
}
printf ("min = %ld et max = %ld\n", min, max);
}
lami20j |
Seul petit problème lami20j c'est que si min et max sont passé en int (long) au lieu de int * (long *) la valeur de min et max ne sera pas corrigé dans le main (en C les paramètres sont des recopies) et c'est pour ça qu'on passe par un pointeur.
|
Yep mais ca sert à rien de passer min et max en paramètre parce qu'il seront de toute façon inutilisable. En plus il faut faire attention à la manière dont sont initialisées ton min et ton max (donc là c'est le cas tout va bien :p), parce que si tu as des uniquement des valeurs négatives dans ton tableau il va retourner min = max = 0.
void maxmin (long *t,long n){
long min=t[0],long max=t[0],i;
for (i = 0; i < n; ++i){
if (t[i] > max) max = t[i];
if (t[i] < min) min = t[i];
}
printf ("min = %ld et max = %ld\n", min, max);
}
|
Void minmax(long tab[], int lgti, long *mi, long *ma);
|