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