Exercice c

julie -  
 dijasma -
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

augustepirou
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Membre Dernière intervention   437
 
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
dijasma
 
je cherche la programmation en c de nombre d'Armstrong
0