|
|
|
|
Jai un petit probléme dans mon code qui ne me donne pas ce que je souhaite,le probléme est de determiner la valeur max d'un tableau et de determiner sa position:voila mon code qui ne marche pas!!
#include<stdio.h>
#include<conio.h>
main()
{
int n,i,tab[50],max=tab[0],pos=0;
printf("saisir un entier n<=50:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("element %d:",i);
scanf("%d",&tab[i]);
}
for(i=0;i<n;i++)
{
printf("tab[%d]=%d\n",i,tab[i]);
}
for(i=0;i<n;i++)
{
if(tab[i]>max)
{
max=tab[i];
pos=i;
}
}
printf("la valeur tab[%d] est max occupe la position %d\n",tab[i],i);
system("pause");
}
Salut,
[lamitest@localhost bin]$ ./nb_min_max Entrez les 5 nombres (separés par espace) : 2 5 9 2 5 Le nombre plus grand est : 9 dans la position 3 Le nombre plus petit est : 2 dans la position 4Ce code ne gére pas les doublons. Resultat sans doublons : [lamitest@localhost bin]$ ./nb_min_max Entrez les 5 nombres (separés par espace) : 25 9 8 5656 2 Le nombre plus grand est : 5656 dans la position 4 Le nombre plus petit est : 2 dans la position 5 [lamitest@localhost bin]$ Je préfère la version Perl http://www.commentcamarche.net/forum/affich-1956018-resoudre-un-algorithme-lisez-... [lamitest@localhost bin]$ perl my_perl_script/algo_nb_ccm031205.pl Fixez le nombre N, 5 par défaut: 10 Entrez le nombre 1 : 2 Entrez le nombre 2 : 5 Entrez le nombre 3 : 45 Entrez le nombre 4 : 2 Entrez le nombre 5 : 45 Entrez le nombre 6 : 2 Entrez le nombre 7 : 565 Entrez le nombre 8 : 2 Entrez le nombre 9 : 565 Entrez le nombre 10 : 48 Vous avez entrez les nombres suivantes : 2, 5, 45, 2, 45, 2, 565, 2, 565, 48 Le plus grand nombre est : 565. Saisie 2 fois. Trouvé dans les positions 7, 9. Le plus petit nombre différent de 0 est : 2. Saisie 4 fois. Trouvé dans les positions 1, 4, 6, 8. [lamitest@localhost bin]$ |
Le probléme ne se resout pas encore....
|
Re,
#include<stdio.h>
main()
{
int n,i,tab[50],max=tab[0],pos=0;
printf(\"saisir un entier n<=50:\");
scanf(\"%d\",&n);
for(i=0;i<n;i++)
{
printf(\"element %d:\",i);
scanf(\"%d\",&tab[i]);
}
for(i=0;i<n;i++)
{
printf(\"tab[%d]=%d\n\",i,tab[i]);
}
for(i=0;i<n;i++)
{
if(tab[i]>max)
{
max=tab[i];
pos=i;
}
}
printf(\"la valeur max est %d et occupe la position %d\n\",max,pos+1);
}
et le résultat
[lamitest@localhost bin]$ gcc -o nb_min_max_2_ccm nb_min_max_2_ccm.c [lamitest@localhost bin]$ ./nb_min_max_2_ccm saisir un entier n<=50:6 element 0:25 element 1:87 element 2:89 element 3:23 element 4:125 element 5:5 tab[0]=25 tab[1]=87 tab[2]=89 tab[3]=23 tab[4]=125 tab[5]=5 la valeur max est 125 et occupe la position 5 [lamitest@localhost bin] |
Re,
printf(\"la valeur tab[%d] est max occupe la position %d \",tab[i],i); i c'est une variable que tu utilises pour incrémentation, une fois sortie de ta boucle, c'est fini avec i En revanche tu stocke dans max et pos la valeur maximale et la positon donc la ligne doit être printf(\"la valeur max est %d et occupe la position %d \",max,pos+1); |
Voici un exercice (correcte)qui inclu le maximum et le minimum
|