Résultats de 1 à 3 sur 3

Sujet : Allocation de tableaux et matrices

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    1

    Allocation de tableaux et matrices

    Lu all voila je vous tape tout mon code ici c\'est un programme qui doit calcuer l addition et multiplication de matrices.
    Le programme fontionnait avant ke j ajoute l option pr ke l user puisse choisir lui meme la taille de ses matrices...

    pouvez vous m aider svp

    CODE:
    --------

    #include <iostream.h>
    #include <stdlib.h>

    int main()
    {
    int choix;
    const int TAILLE=0;

    cout << \"Programme Matriciel :\\n\" ;
    cout << \"=====================\\n\\n\" ;


    // Entréé des matrices par l utilisateur


    // Dimension des matrices

    cout << \"Entrez la dimension de vos matrices : \" ; cin >> taille;

    int a[TAILLE][TAILLE];

    cout << \"Entrez les 9 valeurs de votre matrice 1 : \\n\\n\" << endl ;
    for (int i = 1; i <= TAILLE - 1; i++)
    {
    for (int j = 1; j <= TAILLE - 1; j++) {
    cout << \"a[ \" << i << \",\" << j << \" ] = \" ;

    cin >> a[i][j];
    }
    }

    cout << \"\\n\\nVotre matrice 1 est : \\n\" << endl;
    for (int i = 1; i <= TAILLE - 1; i++)
    {
    cout << \" Ligne \" << i << \" : \" ;
    for (int j = 1; j <= TAILLE - 1; j++)
    cout << \" \" << a[i][j] ;
    cout << endl ;
    }

    int b[TAILLE][TAILLE];

    cout << \"Entrez les 9 valeurs de votre matrice 2 : \\n\\n\" << endl ;
    for (int i = 1; i <= TAILLE - 1; i++)
    {
    for (int j = 1; j <= TAILLE - 1; j++) {
    cout << \"b[ \" << i << \",\" << j << \" ] = \" ;
    cin >> b[i][j];
    }
    }

    cout << \"\\n\\nVotre matrice 2 est : \\n\" << endl;
    for (int i = 1; i <= TAILLE - 1; i++)
    {
    cout << \" Ligne \" << i << \" : \" ;
    for (int j = 1; j <= TAILLE - 1; j++)
    cout << \" \" << b[i][j] ;
    cout << endl ;
    }

    // Choix de l\'opération

    cout << \"Addition de 2 matrices : 1 \" << endl;
    cout << \"Multiplication de 2 matrices : 2 \" << endl;

    s1: cout << \"Entrez votre choix : \" ; cin >> choix ;

    if ( choix == 1 ) goto addition;
    else if ( choix == 2 ) goto multip;
    else { cout << \"Mauvais entree !!. Veuillez entrer un choix valide.\"; goto s1;}

    addition: int c[TAILLE][TAILLE];

    cout << \"Voici votre matrice 3, Addition de M1 et M2 : \\n\" << endl;
    for (int i = 1; i <= TAILLE - 1; i++)

    {
    cout << \" Ligne \" << i << \" : \" ;
    for (int j = 1; j <= TAILLE - 1; j++)
    cout << \" \" << a[i][j] + b[i][j] ;
    cout << endl ;
    }

    multip: int d[TAILLE][TAILLE];
    cout << \"Voici le résultat de la multiplication de vos matrices : \" << endl;
    for (int i = 1; i <= TAILLE - 1; i++)

    {
    cout << \" Ligne \" << i << \" : \" ;
    for (int j = 1; j <= TAILLE - 1; j++)
    cout << \" \" << a[i][j] * b[j][i] ;
    cout << endl ;
    }


    }

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    8
    Salut,

    cout << \"Entrez la dimension de vos matrices : \" ; cin >> taille;

    La variable taille dans laquelle tu stockes la dimension saisie par l\'utilisateur n\'est pas définie.

    Tu voulais surement utilisé la variable TAILLE définie en début de programme. Problème, celle-ci est définie comme const donc non modifiable.

    Si tu veux que l\'utilisateur choisisse la taille de la matrice, il faudra que tu alloue dynamiquement ton tableau, car l\'allocation statique ne supporte pas que des valeurs prédéfinies non modifiables(#define ou const int).

    Je te conseille de faire un new :

    int * pTab = new int[taille * taille];

    Tu ne peux pas allouer dynamiquement un tableau à plusieurs dimensions. En mémoire un tableau int a [5] [5] ou un tableau int a [25] représente la même chose.

    Pour chaque tableau que tu vas alloué, il faudra que tu libères la mémoire en fin de programme :

    delete [] pTab;

    Voilà comment tu devra remplir ton tableau :

    cout << \"Entrez les 9 valeurs de votre matrice 1 : \\n\\n\" << endl ;

    Tes indices de tableau commencent tjs à 0 en c et c++.
    Tu devra implémenter ton code de la manière suivante pour lire ou écrire les données de ton tableau.
    for (int i = 0; i <= taille - 1; i++)
    {
    for (int j = 0; j <= taille- 1; j++)
    {
    cout << \"a[ \" << i << \",\" << j << \" ] = \" ;
    cin >> a[i*taille + j];
    }
    }

    Je me permet de te donner qqs conseils, tu devrais faire appel à des procédures plutôt que des goto (le code sera plus clair)

    ex :

    // prototype de fonction à mettre avant le main :
    void Addition(int * pMatrice1, int * pMatrice2, int taille);

    // Appel dans la fonction main :
    if ( choix == 1 )
    {
    addition(pTab1, pTab2, taille);
    }

    // Declaration de la fonction Addition
    void Addition(int * pMatrice1, int * pMatrice2, int taille)
    {
    int * pTab3 = new [taille * taille];

    cout << \"Voici votre matrice 3, Addition de M1 et M2 : \\n\" << endl;

    for (int i = 0; i <= taille - 1; i++)
    {
    cout << \" Ligne \" << i << \" : \" ;

    for (int j = 1; j <= taille - 1; j++)
    {
    cout << \" \" << pMatrice1[i*taille+j] + pMatrice2[i*taille+j];
    cout << endl ;
    }
    }

    delete [] pTab3;
    }


    J\'espère que cela t\'aideras.

    A+

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    6 517
    hum, hum, je me permets de revenir sur un point bien que ce soit bien longtemps après.

    Tu peux allouer dynamiquement une matrice.
    Il te suffit de faire :
    int** tab = new int*[nbre];
    for (int i=0 ; i<nnbre ; i++)
    tab[i] = new int[nbre_bis];
    Puis pour désallouer, il faut faire
    for( i=0 ; i<nbre ; i++)
    delete [] tab[i];
    delete [] tab;
    Et voila voilou, tu peux faire des tab[5][2] sans pb sans devoir faire des changements dans les indices.
    Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
    N'oubliez pas le Tag [Résolu]http://www.ressources.moteurprog.com...rum/Resolu.gif.

    Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!