Petit programme en langage C

Résolu
Imzil -  
 gyhane -
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;

}

5 réponses

tahar
 
void minmax(long tab[], int lgti, long *mi, long *ma);

int main(int argc, char *argv[])
{
long t[]={650,2,52,5548};
int lgtab = 4;
long max=0,min=0,i=0;
minmax(t,lgtab,&min,&max);
printf("%ld\n",min);
printf("%ld\n",max);



system("PAUSE");
return 0;
}

void minmax(long tab[], int lgtab, long *mi, long *ma)
{
*mi=tab[i];
*ma=tab[i];
for (i=0;i<lgtab;i++)
{
if (*mi>tab[i])
{
*mi=tab[i];
}
if (*ma<tab[i])
{
*ma=tab[i];
}

}



}
2
amine
 
void minmax(long tab[], long i, long *mi, long *ma);

int main(int argc, char *argv[])
{
long t[]={650,2,52,5548};
long max=0,min=0,i=0;
minmax(t,i,&min,&max);
printf("%ld\n",min);
printf("%ld\n",max);



system("PAUSE");
return 0;
}

void minmax(long tab[], long i, long *mi, long *ma)
{
*mi=tab[i];
*ma=tab[i];
for (i=0;i<4;i++)
{
if (*mi>tab[i])
{
*mi=tab[i];
}
if (*ma<tab[i])
{
*ma=tab[i];
}

}



}


voici un code qui j'espere va t'aider je suis aussi debutant en c
si j'utilise des long c'est plus par habitude ;-) ne fais pas comme moi :-)
je crois que le variables min et max que t'a mis ne servent pas a grand chose tu devrais renvoyer la valeur directement au pointeur
1
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

les long sont des entiers, donc pas de problèmes
pas besoin de pointer vers min et max puisqu'on n'a pas besoin de modifier leur valeur mais seulement de l'utiliser pour l'affichage vu que la fonction ne retourne rien, donc on s'en sers juste pour l'affichage et une fois sorti de la fonction min et max gardent leur valeur d'origine

comme le tableau doit être d'une taille quelconque, je demande au début la taille de tableau et ensuite je saisie les éléments- à modifier selon besoin
#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);
}
1
gyhane
 
salut a tous
vs pouvez m'aider en ça
"créer un programme :
-qui saisit deux matrices de réels
-qui verifie s'elles sont different
qui calcuke et affiche leur produit
qui retourne le maximum de la matrice produit.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33777 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
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);
}

0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

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.


yep mais ca sert à rien de passer min et max en paramètre parce qu'il seront de toute façon inutilisable.

Pour encore une fois je suis d'accord avec toi :-))
Cependant c'est l'enoncé de l'exercice qui le demande.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
D'ailleurs de début j'ai considéré que les min et max sont inutiles.

Ma 1ère approche c'était une fonction de genre

tri tableau
affichage de 1er (la valeur min) et dernier élément(la valeur max)


void tri (int *t, int n){
  /* algo de tri */
  printf("min = %d ; max = %d\n",t[0],t[n-1]);
}
--
lami20j
0