Void main()
{ int
**p,
// p
- iм'я
покажчика на динамiчний
масив покажчикiв
*p1, i, j, ik, jk; clrscr(); // очистити екран
printf
("\nВвeдiть
кiлькiсть рядкiв матрицi: \n");
scanf
( "%d", &ik);
printf ("Кiлькiсть
рядкiв матрицi = %d", ik);
// Запит ОП динамiчному
масиву покажчикiв:
p=(int**)
malloc (ik * sizeof(int*));
for
(i=0; i < ik; i++)
{
printf("\nВкажiть
кiлькiсть
значень
в
%d
рядку
: ", i+1
);
scanf
("%d", &jk);
printf("Кiлькiсть
значень в %d
рядку = %d
", i+1,
jk
);
//Запит ОП i-рядку
вiльного
масиву:
p[i]=
p1 = (int*) malloc ((jk+1) * sizeof (int));
*p1++ =jk; //или *p[i]
=jk; або: *(p+i)= jk;
printf("\n
Вводиться %d-й
рядок \n",
i+1);
for
(j=1;
j<=jk;
j++)
{printf
("\n
Введiть
%d-е
значення : ", j);
scanf
("%d", p1++); // Або: (p[i]+j), (*(p+i)+j)
} // -
кiнець
циклу
по
'j'
} // -
кiнець
циклу
по
'i'
for
(i=0; i<jk; i++)
{p1
= p[i]; jk = *p1;
for
(j=0; j<jk; j++)
printf
("%d ", *p1++);
//або
printf ("%d ", *(p[i]+j) );
//або
printf ("%d ", *(*(p+i)+j) );
printf ("%d ", *p1);
printf
("\n");
}
// Звiльнення
ОП i-рядкa
вiльного
масиву:
free
(p);
// Звiльнення
ОП покажчика для масиву покажчик?в
printf
("\nДля
завершення роботи натиснiть
будь-яку клавiшу\n");
getch
(); // - натиснути будь-яку клавiшу
}
8