Bonjour tlm ;
Je suis debutant en programmation, je cherche l'algorithme et le programme en C de la dichotomie simple et étagée pour la recherche d'une valeur dans un tableau.
Meci a vous !
Bonjour tlm ;
Je suis debutant en programmation, je cherche l'algorithme et le programme en C de la dichotomie simple et étagée pour la recherche d'une valeur dans un tableau.
Meci a vous !
En gros tu veux le beurre et l'argent du beurre![]()
Réalise ton algo (ou voir le forum algo) ensuite tu pourras retranscrire cela en C et à partir de là on pourra plus t'aider.
Je peux d'ore et déja dire que ton programme va au moins ressembler à cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int main () { return 0; }![]()
Plutôt à cela, non?Envoyé par hegros
Thierry
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int main (void) { return 0; }
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Tant qu'a faire alors je dirais plutot :Envoyé par mujigka
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #include <stdlib.h> int main(int argc,char**argv) { return EXIT_SUCCESS; }
Equivalent, sauf que les paramètres argc et argv sont inutiles, car pas utilisés. Je rappelle que int main() engendre un comportement indéterminé.Envoyé par hegros
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Je ne sais pas d'où tu tiens cela (la norme surementEnvoyé par mujigka
) mais tu peux toujours essayé de relever le défi de me montrer 1 et 1 seul comportement "bizaroide" en utilisant ce proto.
Tiens d'ailleurs rapporte nous où tu as lu cela dans la norme ou dans la spécification que ce proto engendre un comportement indeterminé.
Bon courage![]()
Non.Envoyé par mujigka
Ca signifie que le nombre et le type de paramètres n'est pas défini, ce dont on se tape tant que personne n'appelle main(). Or appeler main() est une pratique peu recommandable (interdite en C++).
est donc acceptable et sans danger, même si
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int main() { }
est plus cohérent avec le reste du code qui utilise des prototypes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int main(void) { }
J'ai l'algo de la dichotomie simple, je peut continuer ?
//déclarations
entier : début, milieu, fin, val
Tnb [0..100] : Tableau d'entier
//initialisation
début <- 0
fin <- 100
//Question
Répéter
Afficher "Valeur recherchée?"
Saisir val
Jusqu'à début<=val et val<=fin
//Boucle de recherche
Répéter
//Calcul du milieu
milieu = arrondiàl'unité((début+fin)/2)
//Conditions et affectations
Si val > Tnb[milieu] alors
début <- milieu + 1
Sinon
Si val=Tnb[milieu] alors
début <- milieu
fin <- milieu
Sinon
fin <- milieu - 1
Finsi
Finsi
jusqu'à début=fin
//Affichage du résultat
Afficher "La valeur est ", val
Superbe si tu es sûr de ton algo il te faut le retranscrire.
Par exemple
Entier : debut,fin,val
Tnb [0..100] : Tableau d'entier
se transforme en
Ensuite tes Répéter jusqu'a se transforme en do while
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int debut,fin,val; int Tnb[100];
Tes Si en if etc etc etc
Tu as essayé de le retranscrire en C pour voir ce que ca donne ?
Salut,
C'est pas plus simple si tu fait un truc dans le genre ca :
int i;
for (i = 0; i < strlen(TonTable); i++)
{
if (TonTable[i] == CeQueTuCherches)
{
// La tu met le code a éxécuter si il la trouver
}
}
1) il VEUT faire de la recherche dychotomiqueEnvoyé par wikipierre
2) strlen(Table) ne marche QUE pour une chaine.
3) si tu as 25 Millions d'enregistrements, un peu dur de faire une boucle comme ça....
![]()
Partager