Programmation c
Résolu
Teo
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Programmation c
- Application de programmation - Guide
- Programmation envoi sms - Guide
- Programmation vb - Télécharger - Langages
- Programmation binaire - Guide
- Programmation télécommande porte de garage brico depot - Forum Matériel & Système
8 réponses
Salut,
Je vais te donner un point de départ.
Tu tries les 20 numéros par ordre croissante ou décroissante et tu n'affiches que les 3 premiers ou derniers.
Je vais te donner un point de départ.
Tu tries les 20 numéros par ordre croissante ou décroissante et tu n'affiches que les 3 premiers ou derniers.
Salut,
Si on te demande un exercice, c'est que tu dois être capable de le faire ;).
Si tu n'y arrives vraiment pas, propose au moins l'algorithme avec des mots français.
Si t'y arrives toujours pas, tu peux déjà t'occuper de juste donner le nombre le plus petit d'un tableau.
Et ça, la réponse est sur wikipedia et a même été répondu sur le forum de nombreuses fois.
Si on te demande un exercice, c'est que tu dois être capable de le faire ;).
Si tu n'y arrives vraiment pas, propose au moins l'algorithme avec des mots français.
Si t'y arrives toujours pas, tu peux déjà t'occuper de juste donner le nombre le plus petit d'un tableau.
Et ça, la réponse est sur wikipedia et a même été répondu sur le forum de nombreuses fois.
en fait je crois qu'il nous demande de lui écrire car lui ne sait pas....
c'est ça ???
c'est ça ???
pour l'instant le prog ne demande pas a l'utilisateur de rentrer des numéros.
aussi il ne marche pas mais ca peut etre un point de depart he l'affiche quand meme, mais il est mal ecrit
int main ()
{
long tableau[20] = {5,8,65,78,4,123,45,7,9,65,84,566,12,57,48,56,18,687,589,2};
long casier [20], armoire[20], valise[20], bagage[20], sac[20], fruit[20]; cadeau[20];
long i, t = 1000, nombre = 0;
for ( i= 0 ; i< 20 ; i++ )
{
long compteur = i+1;
if (tableau[i] < tableau [compteur] )
{
casier[i] = tableau[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", casier[1], casier[2], casier[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (casier[i] < casier[compteur] )
{
casier[i] = armoire[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", armoire[1], armoire[2], armoire[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (armoire[i] < armoire[compteur] )
{
armoire[i] = valise[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", valise[1], valise[2], valise[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (valise[i] < valise[compteur] )
{
valise[i] = bagage[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", bagage[1], bagage[2], bagage[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (bagage[i] < bagage[compteur] )
{
bagage[i] = sac[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", sac[1], sac[2], sac[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (sac[i] < sac[compteur] )
{
sac[i] = fruit[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", fruit[1], fruit[2], fruit[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (fruit[i] < fruit[compteur] )
{
fruit[i] = cadeau[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", cadeau[1], cadeau[2], cadeau[3]);
return 0;
}
nombre = 0;
}
aussi il ne marche pas mais ca peut etre un point de depart he l'affiche quand meme, mais il est mal ecrit
int main ()
{
long tableau[20] = {5,8,65,78,4,123,45,7,9,65,84,566,12,57,48,56,18,687,589,2};
long casier [20], armoire[20], valise[20], bagage[20], sac[20], fruit[20]; cadeau[20];
long i, t = 1000, nombre = 0;
for ( i= 0 ; i< 20 ; i++ )
{
long compteur = i+1;
if (tableau[i] < tableau [compteur] )
{
casier[i] = tableau[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", casier[1], casier[2], casier[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (casier[i] < casier[compteur] )
{
casier[i] = armoire[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", armoire[1], armoire[2], armoire[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (armoire[i] < armoire[compteur] )
{
armoire[i] = valise[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", valise[1], valise[2], valise[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (valise[i] < valise[compteur] )
{
valise[i] = bagage[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", bagage[1], bagage[2], bagage[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (bagage[i] < bagage[compteur] )
{
bagage[i] = sac[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", sac[1], sac[2], sac[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (sac[i] < sac[compteur] )
{
sac[i] = fruit[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", fruit[1], fruit[2], fruit[3]);
return 0;
}
nombre = 0;
for ( i = 0 ; i<nombre ; i++ )
{
long compteur = i+1;
if (fruit[i] < fruit[compteur] )
{
fruit[i] = cadeau[i];
nombre++;
}}
if (nombre == 3)
{
printf ("les trois plus petits nombres sont %i\n%i\n%i\n", cadeau[1], cadeau[2], cadeau[3]);
return 0;
}
nombre = 0;
}
Ca, c'est du programme lool.
Je donne quand même une version plus concise :
Je donne quand même une version plus concise :
#include <stdio.h> #include <limits.h> #define NB_MIN 3 int main(void){ int tab[] = {5,8,65,78,4,123,45,7,9,65,84,566,12,57,48,56,18,687,589,2}; int min[NB_MIN+1]; int i; min[0]=INT_MIN; for(i=1;i<NB_MIN+1;i++){ size_t j; min[i]=INT_MAX; for(j=0;j<sizeof tab/sizeof *tab;j++) if( tab[j]>min[i-1] && tab[j]<min[i] ) min[i]=tab[j]; } for(i=1;i<NB_MIN+1;i++) printf("min %d : %d\n",i,min[i]); return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Un autre exemple
Un autre exemple
#include <stdio.h> #define NB_MIN 3 int main(void) { int tab[] = {5,8,65,78,4,123,45,7,9,65,84,566,12,57,48,56,18,687,589,2}; int min[NB_MIN]; int i=0,j,k,imin,temp; for(k=(sizeof tab / sizeof *tab)-1;i<NB_MIN && k>=1;--k){ imin=0; for(j=1;j<=k;++j) if(tab[imin]>tab[j]) imin=j; temp=tab[k]; tab[k]=tab[imin]; min[i++]=tab[imin]; tab[imin]=temp; } for(i=0;i<NB_MIN;i++) printf("min %d : %d\n",i,min[i]); return 0; }
Allez, un dernier exemple pour la forme, avec tri du tableau comme le suggérait lami20j.
Par contre, s'il y a plusieurs minimums (par exemple trois 2), les minimums affichés seront identiques. Ce qui n'était pas le cas de l'autre version.
#include <stdio.h> #include <stdlib.h> #define NB_MIN 3 static int comp(const void *a, const void *b) { return *(const int*)a-*(const int*)b; } int main(void) { int tab[] = {5,8,65,78,4,123,45,7,9,65,84,566,12,57,48,56,18,687,589,2}; qsort(tab,sizeof tab/sizeof *tab,sizeof *tab,comp); for(int i=0;i<NB_MIN;i++) printf("min %d :%d\n",i,tab[i]); return 0; }
Par contre, s'il y a plusieurs minimums (par exemple trois 2), les minimums affichés seront identiques. Ce qui n'était pas le cas de l'autre version.
Re,
J'ai corrigé la mienne pour remplir la même condition (Ce qui n'était pas le cas de l'autre version. )
J'ai corrigé la mienne pour remplir la même condition (Ce qui n'était pas le cas de l'autre version. )
#include <stdio.h> #define NB_MIN 3 int main(void) { int tab[] = {-20,-20,-20,-17,-17,2,5,8,65,78,4,123,45,7,9,65,84,566,12,57,48,56,18,687,589,2}; int min[NB_MIN]; int i=0,j,k,imin,temp; for(k=(sizeof tab / sizeof *tab)-1;i<NB_MIN && k>=1;--k){ imin=0; for(j=1;j<=k;++j) if(tab[imin]>tab[j]) imin=j; temp=tab[k]; tab[k]=tab[imin]; if(tab[k]!=tab[k+1]) min[i++]=tab[imin]; tab[imin]=temp; } for(i=0;i<NB_MIN;i++) printf("min %d : %d\n",i,min[i]); return 0; }