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
|
int** Agrandit(int** depart)
{
try
{
int** tempo=new int*[taille+1];
for(int i=0;i<taille;i++)
{
//allocation des colone, puis copie des �l�ments d�j� connus
tempo[i]=new int[taille+1]
for(int j=0;j<taille;j++)
{
tempo[i][j]=depart[i][j];
}
//d�claration de l'�l�ment surnumeraire pour la ligne envisag�e
tempo[i][taille]= whatyouwant;
}
}
//pour r�cup�rer les diff�rentes erreurs qui auraient pu survenir
//(principalement les erreurs d'allocation)
catch(...)
{
//l'affichage d'un message pourrait etre sympa, vraissemblablement
// au travers de stc::cerr...
// renvoie la matrice non modifi�e
return depart;
//NOTA: typiquement, new renvoie une exception de type
// std::bad_alloc(), que l'on pourrait utiliser dans le catch
// (sous la forme decatch(std::bad_alloc &e) ) mais il faut alors penser �
//inclure le fichier d'entete <stdexcept>
}
// lib�ration de la m�moire utilis�e par la matrice de d�part AVANT de
// perdre l'adresse m�moire � laquelle elle commence
for(int i=0;i<taille;i++)
{
//D'abord les colones
int* supress=depart[i];
delete[] suppress;
}
//puis les lignes
delete[] depart;
++taille;
return tempo;
} |
Partager