Besoin de vous svp !!! j'ai pas trouvé le bon résultat

Fermé
siwar - Modifié par siwar le 15/10/2016 à 22:50
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 24 oct. 2016 à 11:36
Bonsoir, l'exercice me demande de remplir un tableau dans l'ordre croissant
voici mon travail
#include <stdio.h>
#include <stdlib.h>

#include <stdio.h>
#include <stdlib.h>

int main()
{
int tab[20],i=1,n;
printf("donner n");
scanf("%d",&n);
printf("case1");
scanf("%d",&tab[1]);
do
{
    if (tab[i]<tab[i+1])
    {printf("donner le contenu de la case %d \t",i+1);
    scanf("%d",&tab[i]);
    i++;}
}
while( i<n );
    return 0;
}



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 17/10/2016 à 11:05
Salut,

Tu testes des valeurs du tableau non initialisées (le tableau déclaré dans main peut contenir n'importe quoi avant que tu y mettes une valeur).

L'énoncé de ce que tu dois faire n'est pas clair.

Si tu dois seulement "remplir un tableau avec des saisies d'entiers de l'utilisateur en t'assurant que les entrées sont dans un ordre croissant et en demandant à l'utilisateur de refaire sa saisie pour une entrée donnée si elle est inférieure à la précédente", la logique de ton programme n'est pas bonne non plus.

Si c'est autre chose qu'on te demande, tu n'expliques pas réellement.

Sur un autre plan, si je suis utilisateur, je ne sais pas ce qu'est "n", et je ne sais pas ce qu'on attend de moi lors de l'exécution du programme.

Il n'y a pas de contrôle d'erreur de saisie non plus, mais je ne sais pas si on on attend de toi ce niveau de précautions.

Dal
0
Je tient a dire que je pense avoir résolus ton problème qui me semble facile ta chercher dure pour rien et quand j'utilise register c'est pour force le compilateur a utiliser un registre pour mémoire sa augmente la rapiditée

#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
              register int i;
              int tab[20];
              for(i = 0;i != 19;i++)
              {
                         printf("entre une valeur:")
                         scanf("%d", &tab[i]);
               }
               return 0;
}
0
Par contre j'ai as relus mon code y'a un ; a la fin du printf et aussi l'indentation (les tabulation)je l'ai oubliée dans le for mais aussi marque Résolus si ton problème est reglée
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 24/10/2016 à 11:36
Salut skillshot2,

J'ai des doutes que "ordre croissant" signifie ce que tu proposes (surtout au vu de ce que siwar avait déjà tenté de faire) ... mais comme siwar ne précise pas ce qu'on lui demande, j'imagine que ton code en vaut bien un autre :-)

Sur ton code, outre le
;
que tu signales, ta condition
i != 19
signifie que le contenu du for ne sera pas exécuté si i est égal à 19. Donc, tu ne remplis pas les 20 positions du tableau.

Enfin, pour les optimisations.. il est souvent préférable de laisser le compilateur les faire comme un grand.


Dal
0