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 :

Initialiser des tableaux 2 dimension avec des pointeurs


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 11
    Par défaut Initialiser des tableaux 2 dimension avec des pointeurs
    Bonjour tout le monde.
    Je n'arrive pas à initialiser un tableau 2 dimensions avec des pointeurs étant débutant dans ce langage, je vous prie de m'excuser si mon code est mal organiser ou autre ..
    Alors voilà, j'aimerais initialisé deux tableaux 2 dimensions ( des matrices 3x3), mais pour ça j'aimerais le faire avec des pointeurs car je dois les renvoyer dans le main.
    Les matrice à initialiser sont à la ligne 119 et 131, Pouvez vous me donner un petit coup de mains pour moi savoir comment je dois initialiser ces matrice ? je ne trouve vraiment pas .
    Je vous poste mon code sous paste bin et ci dessous .
    D'avance je vous remercie. https://pastebin.com/tbrvWfdR

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    /*Ecrivez les fonctions et le programme principal qui permettent de
    réaliser les opérations proposées par le menu suivant :
    1 introduire les données d’une matrice.
    2 afficher une des matrices déjà entrées.
    3 multiplier une des matrices déjà entrée par un entier.
    4 tester l’égalité de deux matrices déjà entrées.
    5 effectuer la somme de deux matrices déjà entrée.
    6 multiplier deux matrices déjà entrées.*/
     
    #include <stdio.h>
    #include <string.h>
     
    int _Introduire();
    int _Afficher();
    int _Multiplier_Nb_Entier();
    int _Tester_Egaliter();
    int _Somme_Matrice();
    int _Multiplier_Matrice();
     
     
    int main(int argc, char const *argv[])
    {
        unsigned short int choix= -1;
        int matrice[3][3];
        int matrice2[3][3];
        int *p,*p2;
     
        p=matrice;
        p2=matrice2;
     
        p = malloc (sizeof(int));
        p2 = malloc (sizeof(int));
     
        if ( p == NULL || p2 == NULL )
        {
             fprintf(stderr,"Allocation impossible \n");
             exit(1);
        }
     
     
        menu:        /*Menu*/
        system("CLS");
        puts("Menu");
        puts("=====================");
        puts("1. Introduire les donnees.");
        puts("2. Afficher les matrices deja entrees.");
        puts("3. Multiplier une des matrices deja entrees par un entier.");
        puts("4. Tester l'egalite de deux matrice deja entrees.");
        puts("5. Effectuer la somme de deux matrices deja entrees.");
        puts("6. Multiplier deux matrices deja entrees.");
        puts("0. pour sortir.");
        puts("=====================");
                 /*Choix*/
        do
        {
            printf("Votre choix : ");
            scanf("%d",&choix);
            switch(choix)
            {
                case 1:
                    _Introduire(matrice,p,matrice2,p2);
                break;
     
                case 2:
                    //_Introduire();
                break;
     
                case 3:
                    //_Introduire();
                break;
     
                case 4:
                    //_Introduire();
                break;
     
                case 5:
                    //_Introduire();
                break;
     
                case 6:
                    //_Introduire();
                break;
     
                case 0:
                     //exit (1);
                break;
     
                default:
                    puts("\nErreur, Veuillez recommencer.");
                break;
            }
        }while(choix<0 || choix>6);
        goto menu;
     
     
        return 0;
    }
                /*Fonction introduire*/
     
        int _Introduire(int matrice[3][3], int *p, int matrice2[3][3], int *p2)
        {
            int i,j;
            int choix=0;
     
            p=matrice;
            p2=matrice2;
     
            printf("Quelle matrices voulez vous encoder, 1 ou 2 ? : ");
            scanf("%d",&choix);
     
            if (choix==1)
            {
                puts("\nMatrice 1 :");
                for (i = 0; i < 3; i++)
                {
                    for (j = 0; j < 3; j++)
                    {
                        printf("Encoder la donnees pour la ligne %d colonne %d : ",i+1,j+1 );
                        scanf("%d",&matrice[i][j]);
                    }
                }
            }
            else if (choix==2)
            {
                puts("matrice2 : ");
                for (i = 0; i < 3; ++i)
                {
                    for (j = 0; j < 3; ++j)
                    {
                        printf("Encoder la donnees pour la ligne %d colonne %d : ",i+1,j+1 );
                        scanf("%d",&matrice2[i][j]);
                    }
                }
            }
        return i;
        }

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    On n'a pas besoin de créer un pointeur ici car un tableau est automatiquement transformé en pointeur quand il est passé en paramètre ou retourné par une fonction. Ici la fonction Introduire() remplit bien les matrice et matrice2, les p et p2 ne servent à rien.

    Attention un nom ne doit jamais commencer par un ou deux souligné, c'est réservé au système. Et une fonction qui est déclarée doit indiquer ses paramètres, c'est conseillé depuis plus de 30 ans! Ici on doit écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // déclaration de la fonction, la 1ère dimension du tableau est inutile
    // car la fonction reçoit un pointeur
    void Introduire( int mat1[][3] , int mat2[][3] );
    // ou une déclaration totalement équivalente
    void Introduire( int (*mat1)[3] , int (*mat2)[3] );
    Exemple d'une fonction addition et afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void Ajouter_Matrices( const int mat1[][3] , const int mat2[][3] , int matRes[][3]) {
      for ( unsigned i = 0 ; i < 3 ; ++i )
         for ( unsigned j = 0 ; j < 3 ; ++j )
             matRes[i][j] = mat1[i][j] + mat2[i][j];
    }
    void Afficher_Matrice( const int mat[][3] ) {
       for ( unsigned i = 0 ; i < 3 ; ++i ) {
          for ( unsigned j = 0 ; j < 3 ; ++j )
             printf( "%d\t" , mat[i][j] );
          printf("\n");
       }
    }
    Le mot "unsigned" peut être remplacé par "int" et le mot "const" peut être ôté si tu ne les a pas encore appris.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/07/2013, 16h07
  2. Affichage des tableaux dans la liste des tableaux
    Par Hello_World dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 11/05/2009, 02h50
  3. Générer des noms de champs avec des tableaux
    Par MV1908 dans le forum Zend_Form
    Réponses: 2
    Dernier message: 26/05/2008, 16h16
  4. Réponses: 6
    Dernier message: 20/02/2007, 17h00
  5. Réponses: 8
    Dernier message: 09/03/2006, 17h48

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