Тема: динамічна пам"ять
потрібно створити програму, яка б створювала динамічну пам"ять для двохвимірної матриці НЕВИЗНАЧЕНОГО розміру. потрібно використовувати вектор
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → динамічна пам"ять
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
потрібно створити програму, яка б створювала динамічну пам"ять для двохвимірної матриці НЕВИЗНАЧЕНОГО розміру. потрібно використовувати вектор
Якщо я правильно уявив умову задачі, має бути щось назразок такого:
#include <stdlib.h>
#include <stdio.h>
int **matr_alloc(int *matr_size)
{
int *mem =malloc(matr_size[0]*matr_size[1]*sizeof(int));
int **res=malloc(matr_size[0]*sizeof(int*));
int i, j;
for(i=j=0; i<matr_size[0]; i++, j+=matr_size[1])
res[i]=&mem[j];
return res;
}
int main()
{
int matr_size[2];
int **matrix;
printf("Matrix size (rows, cols): ");
scanf("%d %d", &matr_size[0], &matr_size[1]);
matrix=matr_alloc(matr_size);
//якісь дії з цією матрицею....
}
P.Y.
Я гадаю, що викладач прямо вказує на вектор як складову бібліотеки мови С++, а не на вектор як структуру даних, що містить математичний об’єкт - вектор. Ці мавпочки не доросли до абстрактних категорій.
Можливо. Якщо йдеться про класи стандартної бібліотеки C++, а не матриці й вектори, реалізовані засобами класичного C, мій варіант не підходить, на жаль.
P.Y.
Я гадаю, що викладач прямо вказує на вектор як складову бібліотеки мови С++, а не на вектор як структуру даних, що містить математичний об’єкт - вектор. Ці мавпочки не доросли до абстрактних категорій.
Будь-ласка, поясніть хтось про змінні і пам'ять, я початківець, не можу розібратись в пам'яті:
Якщо створити змінну int a=1; , то вона буде займати місце в оперативній пам'яті. Коли память буде вільна?- коли змінна вийде за область видимості, чи після завершення програми? Чи все ж треба створювати вказівник з допомогою new і видаляти delete? Чим відрізняється вказівник int* a=&b; від int a=new int - адже перший вказівник не можна видалити, і він буде займати пам'ять до кінця дії програми? НІДЕ про це не написано. Буду вдячний.
Якщо створити змінну int a=1; , то вона буде займати місце в оперативній пам'яті. Коли память буде вільна?- коли змінна вийде за область видимості, чи після завершення програми? Чи все ж треба створювати вказівник з допомогою new і видаляти delete?
Вірно і перше, і друге, і третє. Пам’ять буде звільнена, коли змінна (створена таким чином, як ви написали) вийде
за межі видимості або після завершення програми. Використовувати new та delete не треба, а можна. В деяких випадках це виправдано.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися