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