Insertion d'une valeur dans une matrice (langage c)
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Insertion d'une valeur dans une matrice (langage c)



  1. #1
    sel121

    Post Insertion d'une valeur dans une matrice (langage c)


    ------

    J'ai fait un programme mais il ne veut pas marcher,je vous propose de m'aider s'il vous plait !
    L'exo est :
    Soit A une matrice de n,m tailles d'entiers,chaque ligne de la matrice contient des éléments triés dans l'ordre croissant.
    Ecrire un programme qui insère une valeur val donnée dans chaque ligne de la matrice, si elle n'existe pas deja.L'insertion doit préserver l'ordre croissant des éléments.
    En cas d'insertion, la dernière valeur de la ligne sera perdue.
    Voici ce que j'ai fait :

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {int A[10][20],val,c,k;
    int i=0,j=0,n=0,m=0;
    printf("Donnez le nombre de ligne puis le nombre do colonne de votre matrice:\n");
    scanf("%d%d",&n,&m);
    printf("Entrez les elements de votre matrice ligne par ligne:");
    for(j=0;j<n;j++)
    {for (i=0;i<m;i++)
    {
        scanf("%d",&A[j][i]);
    }}
    printf("Votre matrice est:\n");
    for(j=0;j<n;j++)
    {
        for (i=0;i<m;i++)
    {
        printf("%d\t",A[j][i]);
    
    }
    printf("\n");
    }
    //On donne la valeur a inserer :
    
    printf("Donnez la valeur a inserer s'il vous plait:");
    scanf("%d",&val);
    //On commence la procedure
    
    for(j=0;j<n;j++)
    {
        for (i=0;i<m;i++)
        {
            if(val<A[j][i] )
            {
                for(k=(m-1);k>=i+1;k--)
                {
                    A[j][k]=A[j][k-1];
    
                }
                c=val;
                 A[j][i]=val;
                 val=A[j][i+1];}
    
    
        else if(c>A[j][m-1])
        {
            A[j][m-1]=val;
        }
        //Le cas ou val== A[i][j]
        else {
                A[j][i]=A[j][i];
    
        }
    
            }
        }
    
    for(j=0;j<n;j++)
    {for (i=0;i<m;i++)
    {
        printf("%d\t",A[j][i]);
    }
    printf("\n");
           }
    
    
        return 0;
    }

    -----
    Dernière modification par Jack ; 13/03/2016 à 23h05. Motif: Balises code

  2. #2
    Jack
    Modérateur

    Re : Insertion d'une valeur dans une matrice (langage c)

    Merci de prendre la peine de lire les consignes de ce forum avant de poster, notamment pour l'usage des balises code

  3. #3
    Chanur

    Re : Insertion d'une valeur dans une matrice (langage c)

    Illisible.
    Le langage C permet d'utiliser des noms de variables de plusieurs caractères ...
    Les indentations sont franchement mal fichues.
    Sinon, je ne comprends pas ton algorithme, mais de toute façon, ça ne PEUT PAS marcher :
    Code:
    //On commence la procedure
    
    for(j=0;j<n;j++)
    {
        for (i=0;i<m;i++)
        {
            if(val<A[j][i] )
            {
                for(k=(m-1);k>=i+1;k--)
                {
                    A[j][k]=A[j][k-1];
    
    
                }
                c=val;
                 A[j][i]=val;
                 val=A[j][i+1];} ici, tu modifies val, donc pour les lignes suivantes elle n'aura plus la bonne valeur
    
    
    
    
        else if(c>A[j][m-1])  ici, tu utilises une variable c que tu n'as pas initialisée
        {
            A[j][m-1]=val;
        }
        //Le cas ou val== A[i][j]
        else {
                A[j][i]=A[j][i]; ici, tu ne fais rien ...
    
    
        }
    
    
            }
        }
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  4. #4
    sel121

    Re : Insertion d'une valeur dans une matrice (langage c)

    Oui,justement j'avais remarqué pour le va qui change de valeur et pour le c non initialisé.
    J'ai voulu faire ce programme à l'aide de boucle "for" mais j'ai fait du gros n'importe quoi.J'ai trouvé une solution avec une boucle "while" mais j'aimerais le faire avec une boucle "for".Lorsque j'aurais du temps d'ici quelques jours je la publierai.
    Remarque: Je précise que je n'ai jamais fait de langage c de ma vie et que je ne suis qu'à mes débuts.
    Si vous avez des conseils,n'hésitez pas.
    Merci pour votre réponse,ça m'a aidé à me réveiller !

  5. A voir en vidéo sur Futura
  6. #5
    Chanur

    Re : Insertion d'une valeur dans une matrice (langage c)

    C'est pas grave de débuter : je suis presque sûr que tous les informaticiens en sont passé par là.

    Je te conseille de prendre un cas simple et de le faire à la main, en notant exactement les opérations à effectuer. Plusieurs cas, en fait : sil la valeur est déjà dans une ligne de la matrice, il ne faut rien faire à cette ligne (donc sûrement pas commencer à décaler la fin avant de le savoir)
    si la valeur est supérieure à la plus grande, il ne faut rien faire non plus, etc.

    D'autre part rien n'oblige l'utilisateur à saisir des valeurs dans le bon ordre, pour chaque ligne. Ce serait bien de vérifier que la matrice est correcte avant de la modifier.

    Quant aux boucles "while" ou "for", c'est exactement la même chose : dans la boucle "for", il y a simplement une instruction qui sera exécutée avant chaque itération et une instruction qui sera exécutée après. Tout ce qui peut s'écrire avec une boucle "while" peut s'écrire avec une boucle "for" et réciproquement. C'est la lisibilité du programme qui doit guider le choix.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  7. #6
    Jack
    Modérateur

    Re : Insertion d'une valeur dans une matrice (langage c)

    Peut-être faudrait-il déjà essayer de faire fonctionner le programme avec un vecteur, donc un tableau à une dimension, plutôt qu'une matrice.

    Une ceci acquis, tu pourrais passer à lamatrice.

    Il faut toujours décomposer, de manière à n'être confronté qu'à un seul problème à la fois

Discussions similaires

  1. Matrice, valeur propre.
    Par yoyox dans le forum Physique
    Réponses: 2
    Dernier message: 05/01/2012, 23h34
  2. langage C: appel fonction retourne matrice
    Par invite8b421ec7 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 15/03/2011, 09h09
  3. Valeur propre matrice
    Par invite52dad7be dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 03/11/2010, 17h45
  4. Matrice et valeur propre - urgent
    Par invite6985b48f dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 06/10/2009, 21h00
  5. Valeur singulière et norme de matrice
    Par invitedbe3bcfb dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 28/12/2005, 21h52