Exercice c

Bonjour, comment faire pour
1/compter le nombre de fois que le nombre encodé se trouve dans le tableau et afficher le nombre de fois qu'il apparait!
2/ afficher tous les nombres mais une seule fois chacun même si il se trouve plusieurs fois!
je suis bloqué pouvez vous m'aider ? merci

#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("le minimum est de : %d\n",min);
printf("le maximum est de: %d\n",max);

printf("\n");

/* demande d'un nombre et affichage plusieurs fois */

printf("entrez un nombre\n");
scanf("%d",&nbre);

if ( nbre == tab[i][j])

{
nbre = tab[i][j];
printf("nombre encoder a ete trouver %d fois",nbre);
}
else
printf("le nombre ne s'y trouve pas\n");

}
Configuration: Windows XP
Firefox 2.0.0.10

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. pour la deuxieme question tu peux mettre les nombres dans un tableau et avec une petite fonction tu fait en sorte qu'ils n'apparaissent qu'une seule fois
    #include <stdio.h>
    #include<stdlib.h>
    #include <time.h>
    
    int cherche_nb(int nb, int t[100], int taille)
    {
        int i;
        for(i=0;i<taille;i++)
            if(nb==t[i])
                return 0;
            return 1;
    }
    
    int main (void)
    {
      int tab[10][10],tab_nb[100];
      int i, j, nbr, min, max, nbre, freq, nb_a_cher, taille=1;
      freq = 0;
    
      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 ("le minimum est de : %d\n", min);
      printf ("le maximum est de: %d\n", max);
    
      printf ("\n");
    
      /* demande d'un nombre et affichage plusieurs fois */
    
      printf ("entrez un nombre\n");
      scanf ("%d", &nbre);
    
      for (i = 0; i < 10; ++i){
        for (j = 0; j < 10; ++j){
          if (nbre == tab[i][j])
            freq++;
        }
      }
    
      if (freq > 0)
        printf ("nombre encoder a ete trouver %d fois\n", freq);
      else
        printf ("le nombre ne s'y trouve pas\n");
    
        for(i=0;i<10;i++)
            for(j=0;j<10;j++)
            {
                nb_a_cher=tab[i][j];
                if(cherche_nb(nb_a_cher, tab_nb, taille) == 1)
                {
                    tab_nb[taille-1]=nb_a_cher;
                    taille++;
                }
            }
    printf("\nvoici tous les nombres du tableau qui apparaissent au moins une fois :");
    printf("\n");
        for(i=0;i<taille-1;i++)
            printf("%d ",tab_nb[i]);
      return 0;
    }
    
    1. Modérateur
      Salut,

      essaie ça
      #include <stdio.h>
      #include<stdlib.h>
      #include <time.h>
      
      
      int main (void)
      {
        int tab[10][10];
        int i, j, nbr, min, max, nbre, freq;
        freq = 0;
      
        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 ("le minimum est de : %d\n", min);
        printf ("le maximum est de: %d\n", max);
      
        printf ("\n");
      
        /* demande d'un nombre et affichage plusieurs fois */
      
        printf ("entrez un nombre\n");
        scanf ("%d", &nbre);
      
        for (i = 0; i < 10; ++i){
          for (j = 0; j < 10; ++j){
            if (nbre == tab[i][j])
              freq++;
          }
        }
      
        if (freq > 0)
          printf ("nombre encoder a ete trouver %d fois\n", freq);
        else
          printf ("le nombre ne s'y trouve pas\n");
        return 0;
      }
      
      1. Bonjour,

        pour le premier point tu as presque tout fait :

        Declares une nouvelle variable integer puisque tu as 100 cellules à verifier
        int nb_fois;

        Initialises la variable
        nb_fois=0

        Effectue une boucle pour scruter le tableau entier
        // Y a moyen de faire cela par pointeur
        for(i=0;i<10;i++)
        {
        for(j=0;j<10;j++)
        {
        if ( nbre == tab[i][j]) nb_fois = nb_fois+1;
        // if ( nbre == tab[i][j]) nb_fois++;
        }
        }

        Cela ne me semble pas correct mais je ne trompe peut etre
        min=max=tab[0][0];
        //min=tab[0][0];
        //max=min;

        je te laisse 1 heure pour travailler sur le 2eme point

        tchao