begin process at 2008 05 14 14:26:33
1 171 873 membres
262 nouveaux aujourd'hui
13 963 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MIN-MAX D'UNE MATRICE


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : min, max, matrice Niveau : Débutant Date de création : 28/03/2008 Date de mise à jour : 31/03/2008 23:49:24 Vu : 1 697

Note :
Aucune note

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

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

  • #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 ");
  • }
  • }
#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  ");
     }
}
30 mars 2008 00:01:55 :
Code erroné
30 mars 2008 00:47:42 :
code erroné
30 mars 2008 03:31:22 :
code erroné
30 mars 2008 03:35:10 :
brrr
30 mars 2008 03:43:32 :
.
31 mars 2008 23:48:42 :
vecchio
31 mars 2008 23:49:24 :
vecchio
  • signaler à un administrateur
    Commentaire de f_l_a_s_h_b_a_c_k le 29/03/2008 17:32:18

    printf("\nEntrez le nombre de lignes de la matrice : ");
    scanf("%d",&ligne);


    Dit moi quesque qui arrive si je rentre 200 ici?

  • signaler à un administrateur
    Commentaire de vecchio56 le 29/03/2008 17:44:00 administrateur CS

    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.

Ajouter un commentaire

Appels d'offres

creation d un acces s...
Budget : 130€
Modification d-un comp...
Budget : 2 000€
creation plateforme ec...
Budget : 1 300€

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS