IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Insérer un nombre dans un tableau trié


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 23
    Par défaut Insérer un nombre dans un tableau trié
    Bonjour a tous ,
    j'ai essayé de réaliser un programme qui insère un nombre x dans un tableau que l'utilisateur donne (l'utilisateur donne des nombre triés)
    par exemple si l'utilisateur donne : 1 4 5 6 7
    et x=2
    le tableau deviendra 1 2 4 5 6 7 .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <stdio.h>
    #include <conio.h>
    main()
    {
     
     int t[50],x,j,i,i0;  
     int n,*p; 
     p=&t[0];
     printf("Dimension du tableau (max.50) : ");
     scanf("%d", &n );
     for (i=0; i<n; i++){
     scanf("%d", p+i);}
     printf("donnez x ");
     scanf("%d", &x );
    for (i=0; i<n; i++)
     printf("%d ", *(p+i));
     for (i=0; i<n; i++){
     if (*(p+i)>x){
     i0=i;
     for (j=n; j>i0; j--);{
     *(p+j)=*(p+j-1);}
     n=n+1;
     break;}}
     *(p+i0)=x;
     for (i=0; i<n; i++)
     printf("\n %d ", *(p+i));
     getch();
    }
    le programme se compile normalement mais lors de l'execution ça marche pas totalement.

    Merci j'éspère que vous saurez m'aider.

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Bonjour

    réponse cohérente avec la présentation du source c'est à dire en vrac ! (mais pourquoi tous ces sauts de lignes et caractères espace inutiles ?).

    Déjà (mais ce n'est pas tout), le ';' à l'offset 0537 (octal) de ton source (avec fin de ligne sauce Unix, i.e 1 seul caractère (linefeed)) met à mal ton décalage d'éléments.

    C'est clair, non ?

    Sans plaisanter maintenant : comment veux-tu pouvoir travailler et relire ton source quand il est écrit de la sorte ???

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    je suis d'accord avec plxpy, je ne lis même pas un code source aussi mal indenté.

    De plus, c'est bien de donner correctement le prototype de main :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, const char ** argv)

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 179
    Par défaut
    Bonjour,

    En dehors de ce qui a déjà été dit sur la présentation :

    - tu devrais afficher ton tableau avant l'insertion de x pour voir à quel moment tes valeurs deviennent incohérentes.

    - tu devrais aussi bien regarder cette boucle (j'ai mis vachement de temps à voir ce qui n'allait pas pourtant c'est tout bête) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     for (j=n; j>i0; j--);{
     *(p+j)=*(p+j-1);}
    - tu devrais enfin te demander ce qu'il se passe si ton x est supérieur à tous les éléments du tableau.

  5. #5
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Citation Envoyé par pythéas
    tu devrais aussi bien regarder cette boucle (j'ai mis vachement de temps à voir ce qui n'allait pas pourtant c'est tout bête)
    oui, c'est le :

    Citation Envoyé par moi même
    le ';' à l'offset 0537 (octal) de ton source
    qui aurait, sans doute, été évité avec un minimum d'indentation et de "présentation" du code.

    Pendant que tu "nettoyes" ton code, hitachi95, oublie ta variable p qui n'est qu'un pointeur sur le premier élément de tab et utilise plutôt tab[i] ou tab+i à la place de *(p+i) ou p+i. C'est tout aussi valable et ça pollue moins le code.

    A noter aussi que le décalage des éléments peut se faire via memmove (et pas memcpy à cause du recouvrement entre les zones)

Discussions similaires

  1. [Turbo Pascal] Insertion d'un nombre entier dans un tableau trié
    Par FASTWERO dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 05/05/2014, 20h40
  2. Réponses: 1
    Dernier message: 19/01/2014, 19h35
  3. Réponses: 6
    Dernier message: 05/01/2006, 14h23
  4. Comparaison de nombre dans un tableau.
    Par slackjayo dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 29/04/2005, 17h21
  5. URGENt: recherche dans un tableau trié par ordre alphabetiqu
    Par JulPop dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2005, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo