Je suis actuellement en train de faire l'ensemble du cours de OCR concernant le C dans le but d'avoir quelques bases dans ce langage. Voilà 2 jours que je suis complètement bloqué concernant l'exercice 5 où l'on nous demande d'ordonner un tableau.
Voici le code que j'ai produis, je souhaiterai votre avis et vos conseils pour que se dernier soit effectif lors du rendu. Merci d'avance pour les conseils que vous m'apporterez
#include <stdio.h>
#include <stdlib.h>
void ordonner_tableau(int tableau[], int taille_tableau)
{
int i = 0;
int j = i;
int swap;
while( i < taille_tableau )
{
while( j < taille_tableau)
{
if(tableau[i] > tableau[j])
{
swap = tableau[i];
tableau[i] = tableau[j];
tableau[j] = swap;
}
j++;
}
printf("%d\n", tableau[i]);
i++;
}
}
int main()
{
int tab[8] = {51, 38, 67, 54, 83, 50, 62, 25};
ordonner_tableau(tab, 8);
return(0);
}
Tu y es presque ! C'est juste comme la boucle while ligne 11 doit être relancé plusieurs fois (pour chaque valeur de i) il faut penser à réinitialiser j !
#include <stdio.h>
#include <stdlib.h>
void ordonner_tableau(int tableau[], int taille_tableau)
{
int i = 0;
int j = i;
int swap = 0;
while( i < taille_tableau )
{
while( j < taille_tableau)
{
if(tableau[i] > tableau[j])
{
swap = tableau[i];
tableau[i] = tableau[j];
tableau[j] = swap;
}
j++;
}
printf("%d\n", tableau[i]);
i++;
j = i;
}
}
int main()
{
int tab[8] = {51, 38, 67, 54, 83, 50, 62, 25};
ordonner_tableau(tab, 8);
return(0);
}
--------------
Merci beaucoup pour ton indication qui à force d'essaie fonctionne, principalement concernant le positionnant de la réinitialisation de J. Néanmoins, je ne comprends pas pourquoi mon j doit être égal à i, et pas à 0? Possible d'avoir une explication sur le pourquoi du comment ? :3 Merci d'avance
j peut valoir à chaque fois zéro, mais on sait que les éléments de 0 à i ont déjà été triés. Inutile de les parcourir à nouveau.
2 conseils:
remplace tes boucles while par des boucles for
si tu veux absolument conserver tes boucles while, déplace la ligne 7 juste avant la 11, et supprime la ligne 23. Tu devrais aussi supprimer la ligne 8 et mettre int devant swap ligne 15
- Edité par edgarjacobs 18 septembre 2021 à 16:45:44
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Je fais les exercices OCR en vu d'une mini préparation personnel pour la piscine de l'école 42. De ce fait, je m'oblige à utiliser while, même si for me semble plus simple.
Merci pour les conseils de syntaxes qui permettent de gagner un peu de lisibilité. J'ai tendance à annoncer mes variables dès le début de ma fonction afin de savoir ce que je peux utiliser durant la fonction, et ne pas en sortir une du chapeau sans l'avoir énoncée.
En complément de ce qu'a dit edgarjacoobs, si tu démarres j à i, tu compares une valeur avec elle-même. Donc il fautt commencer avec j=i+1 Si tu laisses aller i jusqu'à taille_tableau - 1 (i < taille_tableau) tu vas encore comparer la dernière position avec elle-même. Il faut i < taille_tableau-1 Finalement, il n'est pas souhaitabled'afficher dans la fonction de tri. Elle devrait être faite pour trier seulement. Tu pourrais t'écrire une fonction qui ne fait qu'afficher. Dans d'autres circonstances, ce serait utile d'afficher avant et après le tri pour comparer.
edit: Pour l'école 42 je n'ose dire ce que j'en pense ...
Définis les variables au moment où tu en as besoin. C'est du vieux C que de tout définir au début.
Les for t'auraient évité de faire l'erreur sur l'initialisation de j
- Edité par PierrotLeFou 18 septembre 2021 à 17:49:23
Le Tout est souvent plus grand que la somme de ses parties.
Je fais les exercices OCR en vu d'une mini préparation personnel pour la piscine de l'école 42. De ce fait, je m'oblige à utiliser while, même si for me semble plus simple.
Merci pour les conseils de syntaxes qui permettent de gagner un peu de lisibilité. J'ai tendance à annoncer mes variables dès le début de ma fonction afin de savoir ce que je peux utiliser durant la fonction, et ne pas en sortir une du chapeau sans l'avoir énoncée.
Agréable journée,
Si tu fais la piscine, on t'imposera d'avoir tes variables en début de fonction et pour doubler l'aberration, les variables devront rester sans initialisation. Si un reviens au C après la piscine, il te faudra désapprendre toutes les mauvaises pratiques apprises.
Un mal qui répand la terreur, Mal que le Ciel en sa fureur Inventa pour punir les crimes de la terre Jean de La Fontaine La Piscine 42 est même rendue en Amérique ...
Le Tout est souvent plus grand que la somme de ses parties.
Exercice tableau 5, ordonner le tableau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
En recherche d'emploi.
Le Tout est souvent plus grand que la somme de ses parties.