Min-max d'une matrice

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 385 fois - Téléchargée 19 fois

Contenu du snippet

Etant donné une matrice A on dit qu'un couple d'indices (p,q) représente un min-max de cette matrice si Ap,q est un min de la ligne p et un max de la colonne q .Ce programme permet de trouver le minimum de la ligne p et en mémoriser les numéros de la colonne et pour chacun de ces rangs q, déterminer si Ap,q est un maximum pour sa colonne

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>

void minmax(int mat[][],int,int);

int main()
{
    int m[40][40],l,c,i,j;
	printf("Nombre de ligne : ");
	scanf("%d",&l);
	printf("Nombre de colonne : ");
	scanf("%d",&c);
	for(i=0;i<l;i++)
     {
       for(j=0;j<c;j++)
        {
          printf("\nValeur ligne %d colonne %d : ",i+1,j+1);
          scanf("%d",&m[i][j]);
        }
     }
    system("cls");
    minmax(m,l,c);
    return 0;
}

void minmax(int mat[40][40],int lg,int cl)
{
   int  p,z=1;
   int  t,j,num,i,s;
    p=0;

    do
     {

       t=mat[p][0];
             /*Recherche du minimun */
      for(j=1;j<cl;j++)
      {
       if(t>mat[p][j])
        {
         t=mat[p][j];
         num=j;
        }
       }
       s=1;
       /*Verifier si t est un maximun pour sa colonne*/
      for(i=0;i<lg;i++)
	 {
	   j=num;
      if(t>mat[i][j])
       s++;
	 }
	if(s>(lg-1))
      {
        printf("\n(%d,%d) est min-max et sa valeur est %d",p+1,num+1,t);
      }
	else
      {
          z++;
      }
       p++;
     }
    while(p<lg);
    if(z>lg)
     {
       printf("\nPas de min-max  ");
     }
}

A voir également

Ajouter un commentaire Commentaires
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
12
29 mars 2008 à 17:44
En plus un code écrit comme ca n'a aucun intérêt : tout est dans le main, donc si on veut réutiliser ton algo (je ne vois pas pourquoi, mais admettons), on est obligé de tout refaire (en général, quand on donne un algo, on l'externalise dans une fonction, ce qui permet de bien voir ce qu'il prend en entrée et ce qu'il retourne, et surtout ce qui permet de le réutiliser).

printf("\n(%d,%d) est min-max",1,c+1);
Ca c'est pas très malin, pourquoi ne pas écrire ca?
printf("\n(1,%d) est min-max",c+1);

Bizarrement, j'ai l'impression que ton code est le premier sur ce sujet. Merci donc d'effectuer les améliorations nécessaires pour qu'on puisse le garder.
f_l_a_s_h_b_a_c_k
Messages postés
56
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
1 février 2009

29 mars 2008 à 17:32
printf("\nEntrez le nombre de lignes de la matrice : ");
scanf("%d",&ligne);

Dit moi quesque qui arrive si je rentre 200 ici?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.