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 :

affichage d'une matrice carrée


Sujet :

C

  1. #1
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut affichage d'une matrice carrée
    bonjour,
    en fait je voulais afficher ma matrice sous forme:
    1 2 3 4
    3 0 4 6
    1 2 3 4
    3 0 4 6
    je veux garder la forme habituelle d'une matrice(affichage ligne par ligne)
    mais j'ai pas reussi à le faire.Ce que j'ai pu faire c' est d' afficher les élements de la matrice successivement (1 2 3 5 78 09 099 par exemple).
    si quelqu'un a une idée qu'il la partage ....je serais trés reconnaissante.
    merci

  2. #2
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut Solution
    sa fait très long temps j'ai pas programmer avec le c ( 3 ans ) mais je panse sa marche
    il faut ajouter le caractère saute de ligne \n
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include<stdio.h>
    main()
    {
    int matrice[50,50];
    for(int i =0;i<50;i++){
    for(int j=0;j<50;j++) printf('%d',&matrice[i;j]);
    //sauter la ligne apès chaque affichage d'une ligne
                                printf('\n');
                                }
    }

  3. #3
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut
    merci pour votre reponse.
    mais j'ai essayer et ça n'a pas marché

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    ben c'est normal ...

    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
    #include<stdio.h>
    
    int main(void)
    {
    int matrice[50,50];
    int i, j ;
    
    printf ( "\n");
    for( i =0; i<50 ;i++){
    { 
       for(j=0;j<50;j++)
            printf("%4d", matrice[i][j]);
    
       printf ( "\n");
    
    }
    return 0 ;
    }
    j'ai mis 4d pour avoir toujours des chiffres de 4 caracteres de large, ce qui donne de 1 a 999, avec 1 espace entre...

    Ca peut se modifier,,,

  5. #5
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Bonsoir,

    Cette notation est permise en C ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int matrice[50,50];
    ....

  6. #6
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par ssmario2 Voir le message
    Bonsoir,

    Cette notation est permise en C ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int matrice[50,50];
    ....
    bien sur n'est pas permise....mais notre ami ca fait longtemps qu'il n'a pas programmer c est pour ça.
    pour le printf oui..effectivement on doit pas mettre le &
    merci pour vous deux pour vos reponses

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut plus explication
    mon frère vous pouvez nous ré expliquer le problème par ce que meme notre ami souviron34 il a répondu presque comme moi?
    merci

  8. #8
    Débutant
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ben c'est normal ...

    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
    #include<stdio.h>
    
    int main(void)
    {
    int matrice[50,50];
    int i, j ;
    
    printf ( "\n");
    for( i =0; i<50 ;i++){
    { 
       for(j=0;j<50;j++)
            printf("%4d", matrice[i][j]);
    
       printf ( "\n");
    
    }
    return 0 ;
    }
    j'ai mis 4d pour avoir toujours des chiffres de 4 caracteres de large, ce qui donne de 1 a 999, avec 1 espace entre...

    Ca peut se modifier,,,
    Oui ça trés bien marché!!

  9. #9
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut au prochaine question...
    Citation Envoyé par s-ehtp Voir le message
    Oui ça très bien marché!!
    félicitation vous m'avez donnez l'occasion de révisé mon cour algo de 2 eme année lol

  10. #10
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    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
    #include<stdio.h>
    
    int main(void)
    {
    int matrice[50,50];
    int i, j ;
    
    printf ( "\n");
    for( i =0; i<50 ;i++){
    { 
       for(j=0;j<50;j++)
            printf("%4d", matrice[i][j]);
    
       printf ( "\n");
    
    }
    return 0 ;
    }
    Ce code retourne les erreurs de compilation suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ||=== dvp, Debug ===|
    /home/thierry/devel/forums/dvp/main.c||In function «main":|
    /home/thierry/devel/forums/dvp/main.c|5|erreur: expected «]" before «," token|
    /home/thierry/devel/forums/dvp/main.c|12|erreur: «matrice" undeclared (first use in this function)|
    /home/thierry/devel/forums/dvp/main.c|12|erreur: (Each undeclared identifier is reported only once|
    /home/thierry/devel/forums/dvp/main.c|12|erreur: for each function it appears in.)|
    /home/thierry/devel/forums/dvp/main.c|18|erreur: expected declaration or statement at end of input|
    /home/thierry/devel/forums/dvp/main.c|9|attention : ne sera jamais exécuté|
    /home/thierry/devel/forums/dvp/main.c|18|attention : control reaches end of non-void function|
    ||=== Build finished: 7 errors, 0 warnings ===|
    En particulier, int matrice[50, 50] n'est pas une syntaxe valide en C et le tableau matrice n'a pas été initiallisé avant l'affichage.

    Code C : 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
    #include<stdio.h>
     
    #define NB_LIGNES 5
    #define NB_COLS 10
     
    int main(void)
    {
        int matrice[NB_LIGNES][NB_COLS] = {{0}};
        int i, j ;
     
        for (i = 0; i < NB_LIGNES; i++)
        {
            for (j = 0; j < NB_COLS; j++)
            {
                printf("%4d", matrice[i][j]);
            }
            printf ( "\n");
        }
        printf("\n");
     
        return 0;
    }

    Thierry

  11. #11
    Membre éclairé
    Avatar de ZouBi
    Inscrit en
    Octobre 2007
    Messages
    508
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 508
    Points : 812
    Points
    812
    Par défaut
    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
     
    #include <stdio.h>
     
    int main(void)
    {
    int matrice[50][50];
    int i, j ;
     
    printf ( "\n");
    for( i =0; i<50 ;i++){
    { 
       for(j=0;j<50;j++)
            printf("%4d", matrice[i][j]);
     
       printf ( "\n");
     
    }
     
    return 0 ;
     
    }
    voilà,
    ici le tableau n'est pas initialisé, donc des valeurs aleatoires apparaitront

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    En particulier, int matrice[50, 50] n'est pas une syntaxe valide en C et le tableau matrice n'a pas été initiallisé avant l'affichage.
    j'avais même pas vu désolé j'ai été à l'essentiel et j'ai passé trop vite sur le reste.

    Milles excuses et merci, Thierry

  13. #13
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    j'avais même pas vu désolé j'ai été à l'essentiel et j'ai passé trop vite sur le reste.

    Milles excuses et merci, Thierry
    C'est pas grave. Je sais que tu le sais. C'était pour clarifier les choses par rapport aux lecteurs.

    Thierry

  14. #14
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut pardonez moi
    Citation Envoyé par ssmario2 Voir le message
    Bonsoir,

    Cette notation est permise en C ?
    int matrice[50,50];
    Citation Envoyé par s-ehtp Voir le message
    bien sur n'est pas permise....mais notre ami ca fait longtemps qu'il n'a pas programmer c est pour ça.
    pour le printf oui..effectivement on doit pas mettre le &
    merci pour vous deux pour vos réponses
    désoler j'ai pas vu citaioin:
    merci pour la matrice j'ai oublier complètement se détail ( j'ai tellement programmer avec delphi au j'ai confondu avec le c)
    et pour & dans le printf je mérite .
    a touts les façons c'est ça le forum que tout le mande apprendre des choses

  15. #15
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par s-ehtp Voir le message
    en fait je voulais afficher ma matrice sous forme:
    1 2 3 4
    3 0 4 6
    1 2 3 4
    3 0 4 6
    Tu as probablement 2 boucles imbriquées.Il suffit de placer un '\n' au bon moment...

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Rombo Voir le message
    sa fait très long temps j'ai pas programmer avec le c ( 3 ans ) mais je panse
    "Je panse donc j'essuie"...

  17. #17
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ssmario2 Voir le message
    Cette notation est permise en C ?
    Oui, mais elle ne fait pas ce que tu crois. Elle est équivalente à

  18. #18
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Oui, mais elle ne fait pas ce que tu crois. Elle est équivalente à
    ...j'avoue que j'ai été assez surpris, la je parie que c'est le 2eme 50 qui est pris en compte ...

    en tout cas mon compilateur me signale des erreurs pour ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     #include<stdio.h>
     #include<stdlib.h>
     
     int main()
     {
         int mat[50,50]
     
         return 0;
     }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    main.c: In function «main":
    main.c:6: erreur: expected «]" before «," token
     
    le shell a retourné 1
    Un petit coup d'oeil sur la norme qui m'informe que the comma operator can be used within a parenthesized expression
    voila le résultats ( qui compile sans erreurs cette fois mais pas sans warnings ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      #include<stdio.h>
      #include<stdlib.h>
     
      int main(void)
      {
          int mat[(50,50)];
     
     
          printf("Nombre d'elements : %d \n",sizeof mat / sizeof *mat);
     
          return 0;
      }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    main.c: In function «main":
    main.c:6: attention : l'opérande à gauche de la virgule n'a pas d'effet
    Euhhhh... sinon un truc assez bizard dés que j'essaie d'initialiser " mat " j'obtiens ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    main.c: In function «main":
    main.c:6: attention : l'opérande à gauche de la virgule n'a pas d'effet
    main.c:6: erreur: un objet de taille variable peut ne pas être initialisé
    main.c:6: attention : éléments en excès dans l'initialisation de tableau
    main.c:6: attention : (near initialization for «mat")
    main.c:6: attention : éléments en excès dans l'initialisation de tableau
    main.c:6: attention : (near initialization for «mat")
     
    le shell a retourné 1
    Des explications ??

    MERCI !

  19. #19
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par ssmario2 Voir le message
    ...j'avoue que j'ai été assez surpris, la je parie que c'est le 2eme 50 qui est pris en compte ...

    en tout cas mon compilateur me signale des erreurs pour ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     #include<stdio.h>
     #include<stdlib.h>
     
     int main()
     {
         int mat[50,50]
     
         return 0;
     }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    main.c: In function «main":
    main.c:6: erreur: expected «]" before «," token
     
    le shell a retourné 1
    Un petit coup d'oeil sur la norme qui m'informe que the comma operator can be used within a parenthesized expression
    voila le résultats ( qui compile sans erreurs cette fois mais pas sans warnings ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      #include<stdio.h>
      #include<stdlib.h>
     
      int main(void)
      {
          int mat[(50,50)];
     
     
          printf("Nombre d'elements : %d \n",sizeof mat / sizeof *mat);
     
          return 0;
      }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    main.c: In function «main":
    main.c:6: attention : l'opérande à gauche de la virgule n'a pas d'effet
    Euhhhh... sinon un truc assez bizard dés que j'essaie d'initialiser " mat " j'obtiens ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    main.c: In function «main":
    main.c:6: attention : l'opérande à gauche de la virgule n'a pas d'effet
    main.c:6: erreur: un objet de taille variable peut ne pas être initialisé
    main.c:6: attention : éléments en excès dans l'initialisation de tableau
    main.c:6: attention : (near initialization for «mat")
    main.c:6: attention : éléments en excès dans l'initialisation de tableau
    main.c:6: attention : (near initialization for «mat")
     
    le shell a retourné 1
    Des explications ??

    MERCI !
    L'expression (50, 50) n'est pas considérée comme un expression constante. Ainsi, le tableau mat est un tableau à taille variable (VLA ou variable-length array, n'existe qu'en C99) et ne supporte pas d'être initialisé.

    Thierry

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inversion d'une matrice carrée d'ordre
    Par rassol3 dans le forum C
    Réponses: 2
    Dernier message: 01/12/2006, 09h40
  2. Calculer le determinant d'une matrice carrée
    Par NThierry dans le forum C
    Réponses: 15
    Dernier message: 27/08/2006, 11h31
  3. Affichage d'une matrice
    Par ypascal dans le forum Pascal
    Réponses: 7
    Dernier message: 24/04/2006, 20h03
  4. Sous matrice carrée d'une matrice carrée
    Par devils55 dans le forum C++
    Réponses: 2
    Dernier message: 13/11/2005, 19h07
  5. Initialisation d'une matrice carrée (malloc...)
    Par kilinette dans le forum C
    Réponses: 4
    Dernier message: 17/10/2005, 19h57

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