Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice 5 du cours sur les tableaux

Je ne comprends ou est ce que ça bloque

20 mai 2018 à 15:25:44

include "tableaux.h"

void ordonnerTableau(int tableau[]) {

int points[4] = {0, 0, 0, 0u}, resultats[4] = {0}, i, j;
/* Ici, je vais comparer chaque valeur avec toutes les autres, y
compris elle-même, et la valeur la plus grande (ou celle testée en cas
d'égalité) prendra un point en plus dans le tableau points, dans lequel chaque case correspond
à la "même" case du tableau de base. Ainsi, chaque valeur a une note, un nombre de points
qui lui correspond et qui dépend des autres valeurs. */
for (i = 0; i < 4; i++)
{
    for (j = 0; i < 4; i++)
    {
        if (tableau[i] >= tableau[j])
        {
            points[i] = points[i]+1;
        }
        else
        {
            points[j] = points[j]+1;
        }
    }
}
for (i = 0; i < 4; i++);
{
    /* Etant donné que chaque valeur s'est comparée à elle-même et a donc eu un point en trop, j'enlève 1 à chaque note.
Etant donnée aussi que chaque valeur a été comparée 2 fois avec chacune des autres (la 1 s'est comparée à la 3, puis un
peu plus tard la 3 s'est comparée à la 1), je divise chaque note par 2. Maintenant, chaque valeur possède
dans le tableau points une note correspondant a sa place parmi les autres valeurs (ici 0,1,2 ou 3) */
    points[i] = (points [i] -1) / 2;
    /* Toute la partie difficile de mon programme si situe ici : avec le travail fait en amont, chaque valeur possède dans
    un autre tableau sa place parmi les autres valeurs. Je cais donc récupérer chaque note (qui correspond maintenant à la place
    de la valeur) et mettre la valeur en question dans un autre tableau, dans la case correspondant à sa place.
    Ainsi, si les valeurs étaient 2,1,4,3, le tableau points dira : 1,0,3,2. le tableau resultats va donc placer le 2 dans la case 1 (car c'est la note du 2),
    le 1 dans la case 0, le 4 dans la case 3 et le 3 dans la case 2. */
    j = points[i];
    resultats[i] = tableau[j];
    printf("%d\n", resultats[i]);
}

} / J'espère que vous avez compris le fonctionnement de mon programme, même si c'est un peu tordu. je ne comprends pas ou est le problème car la console cesse de fonctionner après que j'ai entré mes valeurs. Merci de votre lecture et de votre éventuelle aide /

Je suis désole pour la mise en page de ma question, je n'arrive pas à envoyer mon programme comme le font tous les autres... et il n'y a ici que la fonction principale, mais il n'y a que celle-là qui nous intéresse car le problème vient de là (la fonction main ne sert dans ce programme qu'à lire les valeurs du tableau qui sera ensuite classé)

-
Edité par Myrros 20 mai 2018 à 15:29:32

  • Partager sur Facebook
  • Partager sur Twitter
20 mai 2018 à 17:38:04

Salut, 

Peux-tu essayer de nous expliquer ce que dois effectuer ta fonction ? Doit-elle simplement trier le tableau ? (dans ce cas tu peux surement faire plus simple). Si ton but est d'utiliser une technique particulière, dis-le nous aussi. Enfin, quelle taille fait ton tableau (4 je suppose), et que contient-il (ou doit-il contenir) ?

  • Partager sur Facebook
  • Partager sur Twitter

J'aime les bandes dessinées, manhuas, manhwas, mangas, comics... Du coup j'ai fait aralosbd.fr !

20 mai 2018 à 18:31:46

> la console cesse de fonctionner après que j'ai entré mes valeurs. Merci de votre lecture et de votre éventuelle aide /

Le problème se situe après la saisie des valeurs, donc peut-être dans le main, peut-être même au niveau de la dernière saisie, tu ne peux pas exclure cette hypothèse !

> Je suis désole pour la mise en page de ma question, je n'arrive pas à envoyer mon programme comme le font tous les autres

Pour ça, il faut sélectionner l'éditeur « Éditeur » et non pas l'éditeur « Markdown ». C'est lui qui possède les options décrites dans le message épinglé à lire absolument.

  • Partager sur Facebook
  • Partager sur Twitter
20 mai 2018 à 18:39:30

Hello,

ValentinLefevre2 a écrit....a console cesse de fonctionner après que j'ai entré mes valeurs....


A tout hasard, n'as-tu pas oublié de donner l'adresse des variables numérique à scanf() ? p.ex. int var; scanf("%d",&var);
  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

20 mai 2018 à 18:48:19

Smiley32 a écrit: Peux-tu essayer de nous expliquer ce que dois effectuer ta fonction ? Doit-elle simplement trier le tableau >

Bonjour, oui la fonction doit simplement trier le tableau, mais j'ai trouvé ma façon de faire assez synthétique et j'aimerais bien arriver à la faire fonctionner... Elle doit simplement remettre les valeurs dans l'ordre croissant, mais j'ai utilisé pour ça trois tableaux: celui avec les valeurs de base, celui qui assigne a chaque position dans le 1er tableau sa place parmi les autres valeurs (grâce à un système de comptage dont je ne suis pas peu fier) et un dernier tableau allant chercher des informations dans les deux premiers pour contenir les valeurs dans le bon ordre... (j'espère avoir été clair) Et mon tableau ne contient que quelques (4) valeurs que j'entre au début, mais en théorie mon programme fonctionne pour autant de valeur que je veux (c'est la son avantage) pour peu que je modifie certaines valeurs dans les boucles for

edgarjacobs a écrit: A tout hasard, n'as-tu pas oublié de donner l'adresse des variables numérique à scanf() ? >

Ne t'inquiète pas, j'ai vérifié ça plusieurs fois

robun a écrit: Pour ça, il faut sélectionner l'éditeur « Éditeur » et non pas l'éditeur « Markdown ». C'est lui qui possède les options décrites dans le message épinglé à lire absolument.

dans 24h, dès que je pourrais poster a nouveau, je vous enverrai mon programmes en entier, que vous y voyez un peu plus clair... (je ne peux pas transformer un post existant en "editeur")

-
Edité par Myrros 20 mai 2018 à 19:03:25

  • Partager sur Facebook
  • Partager sur Twitter
20 mai 2018 à 19:05:32

Ta fonction ne fait pas planter le programme (j'ai testé).

Par contre tu as un ';' à la fin de la ligne du troisième for, ce qui ne doit pas être prévu.

Et ta fonction ne fais pas ce qu'elle devrait non plus du coup.

  • Partager sur Facebook
  • Partager sur Twitter

J'aime les bandes dessinées, manhuas, manhwas, mangas, comics... Du coup j'ai fait aralosbd.fr !

20 mai 2018 à 22:17:32

Smiley32 a écrit:Par contre tu as un ';' à la fin de la ligne du troisième for, ce qui ne doit pas être prévu > Woaw bravo, et merci beaucoup... elle ne fonctionne en effet pas du tout mais ne t'inquiète pas je vais revoir tout ça et le faire fonctionner ^^ mais merci beaucoup en tout cas!

-
Edité par Myrros 20 mai 2018 à 22:33:44

  • Partager sur Facebook
  • Partager sur Twitter
9 avril 2019 à 2:23:49 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code