Exercice c

Fermé
julie - 1 déc. 2007 à 18:23
 dijasma - 4 mars 2008 à 12:57
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");

}

4 réponses

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
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
1 déc. 2007 à 18:43
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;
}
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
1 déc. 2007 à 19:46
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;
}
0
je cherche la programmation en c de nombre d'Armstrong
0