Programme en c de recherche

Fermé
kamilia - 23 mars 2008 à 19:06
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 4 avril 2008 à 10:01
Bonjour,
aidez moi s.v.p. d'ecrire un programme en language c ki trouve le seconde max ds 1 tableau(utilise une fonction)..
merci d'avance

5 réponses

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
24 mars 2008 à 01:34
Le seconde max ? Et dans un tableau de quel type ?
0
slt ,
tableaut de type int , le seconde maximum (mai sans trier le tableau)
merci biennnnnnnnnnnn
0
hi h are u my nice girl
0
hiiiii tu veux me repondre abdebabes ou non???????????
0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
1 avril 2008 à 10:02
Le plus simple c'est de parcourir ton tableau et de maintenir une variable "best" et "second_best". Ces deux variables sont initialisées avec la première valeur du tableau. Essaye de me proposer un pseudo code et je t'aiderai à avancer ensuite.

Bonne chance
0
argentine Messages postés 10 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 3 avril 2008 1
3 avril 2008 à 20:13
slt kamilia je vous donne la solution svte:


#include<stdio.h>
#include<conio.h>



int maximum1(int *t,int taille)
{int maxi;
int i;
maxi=t[1];
for(i=2;i<=taille;i++)
{
if(maxi<t[i])
maxi=t[i];
}
return(maxi);
}

int maximum2(int *t,int taille,int maxi)
{ int max,i;
max=t[1];
for(i=2;i<=taille;i++)
{ if(maxi!=t[i] && max<t[i])
max=t[i];
}
return(max);
}





void main()
{
int *tab;
int max1,max2,n;
int i=1;

clrscr();/*pour effacer l'ecrans*/
textcolor(12);
cprintf("Entrez la taille du tableaux:",n);
scanf("%d",&n);

cprintf("Entrez la %d ‚re valeur:",i);/*textcolor pour une ecriture en couleur*/
scanf("%d",&tab[i]); /*textcolor(12):couleur rouge*/


/**********remplir votre tableaux***************/
for(i=2;i<=n;i++)
{
textcolor(12);
cprintf("Entrez la %d ‚me valeur:",i);
scanf("\n%d",&tab[i]);
}

max1=maximum1(tab,n);
max2=maximum2(tab,n,max1);

textcolor(6);
printf("voici le premier maximum :%d\n" ,max1);
printf("voici le deuxi‚me maximum :%d" ,max2);

getch();/*pour stoper sur l'affichage*/

}


pour un qlquanque prbleme contacte moi par email :
argentine85@hotmail.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
4 avril 2008 à 10:01
Je ne pense pas que ce soit une bonne idée de faire son exercice à sa place si tu veux qu'elle progresse, d'autant plus que ta solution comporte quelques erreurs.

Le programme est faux car il omet la case 0.
De plus il ne vérifie pas si le tableau est non vide (segmentation fault s'il est de taille 0 ou 1 en l'occurrence).
Le deuxième max n'est pas trouvé si les valeurs du tableaux sont toutes égales.
Les parenthèse autour de la valeur de return n'ont pas lieu d'exister.
L'usage de conio.h et de ses fonction (cprintf, clrscr,...) est une mauvaise idée car le programme n'est plus portable, il vaut mieux utiliser stdio.h et les fonctions stanfards (printf etc...)
La fonction main est sensée idéalement retourner un int (EXIT_SUCCESS ou 0 si tout va bien, le code d'erreur sinon).

Bonne chance
0