Langage c les tableau
Résolu
phenix1304
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
bar056 Messages postés 334 Date d'inscription Statut Membre Dernière intervention -
bar056 Messages postés 334 Date d'inscription Statut Membre Dernière intervention -
Bonjour tous le monde
j'ai un programme qui determine le plus petit ecart entre elements de tableau .
j'ai essai avec ca
int t[100],i,j,p,s;
int n;
printf("nombre 'element de tableau :");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("t[%d] = ",i);
scanf("%d",&t[i]);
}
p=0;
for(i=0;i<n-1;i++)
{
for(j=0;j<n;j++)
{
if (t[i]-t[j])= p{ ;
p=s}
}}
printf("le plus petit ecart entre elements de tableau %d \n",p);
mais il ne marche pas je voudrais votre solution svp ?
j'ai un programme qui determine le plus petit ecart entre elements de tableau .
j'ai essai avec ca
int t[100],i,j,p,s;
int n;
printf("nombre 'element de tableau :");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("t[%d] = ",i);
scanf("%d",&t[i]);
}
p=0;
for(i=0;i<n-1;i++)
{
for(j=0;j<n;j++)
{
if (t[i]-t[j])= p{ ;
p=s}
}}
printf("le plus petit ecart entre elements de tableau %d \n",p);
mais il ne marche pas je voudrais votre solution svp ?
A voir également:
- Langage c les tableau
- Tableau word - Guide
- Langage ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
6 réponses
Ceci devrait fonctionner:
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
ohand@osiris: ~/src/CCM/C $ cat ecart.c #include <stdlib.h> #include <stdio.h> #include <limits.h> #define SIZE 100 int main(int argc, char* argv[]) { unsigned int n; int t[SIZE]; unsigned int i,j ; unsigned int d , delta, i1, i2; printf("nombre 'element de tableau :"); scanf("%d",&n); if( n >SIZE ) n=SIZE ; if( n<0 ) exit(EXIT_SUCCESS); for (i=0; i<n; i++) { printf("t[%d] = ",i); scanf("%d",&t[i]); } delta = UINT_MAX; for(i=0; i<n; i++) { for(j = i+1; j < n; j++) { d = abs(t[i]-t[j]); if ( d < delta ) { delta = d; i1 = i; i2=j; } } } printf("\nle plus petit écart entre élements de tableau est %d: t[%d]= %d, t[%d] = %d \n", delta, i1, t[i1], i2, t[i2]); exit(EXIT_SUCCESS); } johand@osiris: ~/src/CCM/C $ head -11 data.txt 10 9890 30979 21417 11978 1675 7859 8046 7748 16218 12281 johand@osiris: ~/src/CCM/C $ ./ecart < data.txt nombre 'element de tableau :t[0] = t[1] = t[2] = t[3] = t[4] = t[5] = t[6] = t[7] = t[8] = t[9] = le plus petit écart entre élements de tableau est 111: t[5]= 7859, t[7] = 7748
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)
@jisisv int t[SIZE]; ??
Sinon, tu as la version allocation dynamique pour ton tableau.
J'ai fait le truc rapidement, pas eu le temps de tester mais ça devrait marcher.
Pour améliorer tes connaissances sur le C, tu as l'excellent bouquin (et la référence) "Le language C" Norme ANSI, 2ème ed. de Brian W. Kernighan et Dennis M. Ritchie.
Tu as aussi le tuto de matéo sur le langage C sur siteduzero.com, qui est très bien foutu pour commener.
Sinon, tu as la version allocation dynamique pour ton tableau.
J'ai fait le truc rapidement, pas eu le temps de tester mais ça devrait marcher.
#include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]){ int k, j; int i; int entree; int min; int *tableau = NULL; printf("Combien d'entree avez vous?\n"); scanf("%d", &entree); fflush(stdin); tableau = malloc(entree*sizeof(int)); if(tableau==NULL){ exit(1); } else{ for(i = 0 ; i<entree ; i++){ printf("Entree %d\n", i); scanf("%d",(tableau + i)); fflush(stdin); } min =abs(tableau[0]-tableau[1]); for(j = 0 ; j<entree-1 ; j++){ for(k=j+1 ; k<entree ; k++){ if(abs(tableau[j]-tableau[i])<min){ min = abs(tableau[j]-tableau[i]); } } } } printf("Le minimum est %d\n", min); free(tableau); exit(0); }
Pour améliorer tes connaissances sur le C, tu as l'excellent bouquin (et la référence) "Le language C" Norme ANSI, 2ème ed. de Brian W. Kernighan et Dennis M. Ritchie.
Tu as aussi le tuto de matéo sur le langage C sur siteduzero.com, qui est très bien foutu pour commener.
Bonjour,
int t[SIZE]; est équivalent à int t[100]; dans son programme (cf. son #define SIZE 100).
Ensuite, dans ton code tu as mis : fflush(stdin); Sache que cela provoque un comportement indéterminé. Donc à ne pas mettre...
Ensuite, dans ton main(), tu n'as pas mis de return 0; à la fin. (Non exit(0) n'est pas pareil).
int t[SIZE]; est équivalent à int t[100]; dans son programme (cf. son #define SIZE 100).
Ensuite, dans ton code tu as mis : fflush(stdin); Sache que cela provoque un comportement indéterminé. Donc à ne pas mettre...
Ensuite, dans ton main(), tu n'as pas mis de return 0; à la fin. (Non exit(0) n'est pas pareil).
Hello fiddy !
Pour le tableau, mea culpa, j'avais pas capté le define.
Pour fflush(stdin) je l'utilise généralement quand j'ai plusieurs scanf à la suite... Je savais pas que ça provoquait un comportement indéterminé ! Tu peux m'en dire un peu plus ? Ou un lien si tu as sous la main ? :)
Et pour le exit(0), c'est un labsus, je voulais bien faire return 0;
Merci !
Pour le tableau, mea culpa, j'avais pas capté le define.
Pour fflush(stdin) je l'utilise généralement quand j'ai plusieurs scanf à la suite... Je savais pas que ça provoquait un comportement indéterminé ! Tu peux m'en dire un peu plus ? Ou un lien si tu as sous la main ? :)
Et pour le exit(0), c'est un labsus, je voulais bien faire return 0;
Merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question