ВУЗ:
Составители:
Рубрика:
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
// выделение памяти под матрицу-результат
b=new float*[m1];
if(b==NULL)
{
printf("Нет требуемого объема памяти.\n");
return;
}
for(i=0;i<m1;i++)
{
b[i]=new float[n];
if(b[i]==NULL)
{
printf("Нет требуемого объема памяти.\n");
for(j=0; j<i; j++)
delete [] b[j];
delete [] b;
return;
}
}
t=0; // номер строки исходной матрицы
for(i=0;i<m1;i++)
{
// находим номер первой «ненулевой» строки
// исходной матрицы, начиная с t-ой
while(IsNullRow(n,a[t])) t++;
// найденная «ненулевая» строка копируется на
// i-ое место в матрицу-результат
for(j=0;j<n;j++)
b[i][j]=a[t][j];
// переход к следующей строке исходной матрицы
t++;
}
}
Рассмотрим второй вариант решения этой задачи – исходная матрица
преобразуется посредством удаления из нее нулевых строк. Данный вариант
решения возможен и эффективен только в случае использования схемы хра-
нения матрицы, изображенной на рис.1.2. Преобразование матрицы происхо-
дит путем переприсвоения указателей на строки. Когда встречатся «нулевая»
строка, освобождается занимаемая ею память, а указателю на эту строку в
дальнейшем будет присвоен адрес начала первой всретившейся после нее
«ненулевой» строки, если такая существует.
Этот вариант функции RemoveNullRowMatrix в качестве параметров
22
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
// выделение памяти под матрицу-результат
b=new float*[m1];
if(b==NULL)
{
printf("Нет требуемого объема памяти.\n");
return;
}
for(i=0;iСтраницы
- « первая
- ‹ предыдущая
- …
- 20
- 21
- 22
- 23
- 24
- …
- следующая ›
- последняя »
