[C] Matrice 10*10

kai -  
mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
mon programme doit alimenter un tableau 10X10, avec des nombres de 1 à 100!
puis on doit rechercher le minimum, le maximum. puis demander un nombre à l'utilisateur et l'afficher autant de fois qu'il se trouve dans le tableau.
je dois dire que je bloque
peut-on m'aider?

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

void main (void)

{

int tab[10][10];
int i,j,nbr,min,max,nbre;

srand(time(NULL));
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{

nbr=rand()%100+1;
tab[i][j]= nbr;

printf( "%d\t", tab[i][j] );

}

}

/* recherche du minimu et maximum*/
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{

if( tab[i][j] < tab[i][j] + 1 )
{
min= tab[i][j];
printf(" le minimum %d", min);
}
else
{
max=tab[i][j];
printf("le maximum %d ",max);
}

}
/* demande d'un nombre et affichage plusieurs fois si utile*/
printf("entrez un nombre");
scanf("%d",&nbre);

}

}

6 réponses

  1. Castor Messages postés 17881 Date d'inscription   Statut Modérateur Dernière intervention   170
     
    La boucle de remplissage me semble OK
    Pour ca:
     if( tab[i][j] < tab[i][j] + 1 )
    {
    min= tab[i][j];
    printf(" le minimum %d", min);
    }
    else
    {
    max=tab[i][j];
    printf("le maximum %d ",max);
    }


    Ca ne peux pas marcher... tu compares une valeur aveccette valeur +1. Donc ton test est toujours VRAI.
    De plus tes deux "printf" pour le min et le max sont dans la boucle donc ils vont s'afficher a chaque fois, alors que tu veux les aficher seulement à la fin.
    Ton soucis est au niveau de la comparaison
    il faut comparer la valeur du tableau à "min" et a "max" puis agir en conséquence
    0
  2. alex
     
    bonjour
    j'ai le même problème mis je bloque au niveau des comparaison avec le min et max!
    peut-on m'aider? merci
    0
  3. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    L'affichage et le calcul du min et max peuvent se faire dans la même boucle (gain de temps) comme suit :

     int tab[10][10];
    int i,j,nbr,min,max,nbre = 0;
    
    
    srand(time(NULL));
    for(i=0;i<10;i++)
    {
    for(j=0;j<10;j++)
    {
    
    nbr=rand()%100+1;
    tab[i][j]= nbr;
    
    // --- Calcul min & max
    if ( nbr < min )
       min = nbr
    if ( nbr > max )
       max = nbr
    
    printf( "%d\t", tab[i][j] );
    
    }
    
    printf("\n"); // --- Saut de ligne pour formater sous forme de tableau, c'est toujours mieux
    
    } 
    
    


    Ensuite il ne te reste plus qu'à demander la valeur à l'utilisateur puis compter dans ton tableau (en faisant un parcours) le nombre d'occurence de ce nombre.

    0
  4. jule
     
    bonjour
    j'ai essayé d'executer ce programme chez moi mais il n'affiche pas ni le max et ni le min, comment fait-on?
    merci
    0
    1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
       
      il faut rajouter des printf pour le min et le max
      printf("minimum : %d\n",min);
      printf("maximum : %d\n",max);
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jules
     
    voici le programme mais il ne marche toujours peut-on me corriger?

    et comment fais-ton pour demander un nombre à l'utilisateur et l'afficher autant de fois qu'il se trouve dans le tableau.

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

    void main (void)
    {
    int tab[10][10];
    int i,j,nbr,min,max,nbre = 0;

    srand(time(NULL));
    for(i=0;i<10;i++)
    {
    for(j=0;j<10;j++)
    {

    nbr=rand()%100+1;
    tab[i][j]= nbr;

    // --- Calcul min & max
    if ( nbr < min )

    min = nbr;

    if ( nbr > max )

    max = nbr;

    printf( "%d\t", tab[i][j] );

    }
    printf("maximum : %d\n",max);
    printf("minimum : %d\n",min);
    printf("\n"); // --- Saut de ligne pour formater sous forme de tableau, c'est toujours mieux

    }
    /* demande d'un nombre et affichage plusieurs fois */
    printf("entrez un nombre");
    scanf("%d",&nbre);
    }
    0
  7. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    essaye ça :
    #include <stdio.h>
    #include<stdlib.h>
    #include <time.h>
    
    
    void main (void)
    {
    int tab[10][10];
    int i,j,nbr,min,max,nbre;
    
        srand(time(NULL));
        for(i=0;i<10;i++)
        {
            for(j=0;j<10;j++)
            {
                nbr=rand()%100+1;
                tab[i][j]= nbr;
                printf( "%d\t", tab[i][j] );
            }
        printf("\n");
        }
    
    min=max=tab[0][0];
    
    /* recherche du minimu et maximum*/
    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            if( min > tab[i][j]  )
            {
                min= tab[i][j];
            }
            if( max < tab[i][j]  )
            {
                max=tab[i][j];
            }
        }
    }
    
    printf("minimum : %d\n",min);
    printf("maximum : %d\n",max);
    }
    0