Petit programme en langage C

Résolu
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

5 réponses

  1. 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];
    }

    }

    }
    1. 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. Modérateur
        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. 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. Modérateur
            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);
            }

            1. Modérateur
              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.
            2. Modérateur
              @lami20jD'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