1 Востаннє редагувалося oksana.odochuk (04.12.2014 20:06:17)

Тема: динамічна пам"ять

потрібно створити програму, яка б створювала динамічну пам"ять для двохвимірної матриці НЕВИЗНАЧЕНОГО розміру. потрібно використовувати вектор

2

Re: динамічна пам"ять

Автор посту ?
http://cs607430.vk.me/v607430789/6fe9/_f1_thsHPV8.jpg

3

Re: динамічна пам"ять

так)

4 Востаннє редагувалося P.Y. (05.12.2014 16:17:00)

Re: динамічна пам"ять

Якщо  я правильно уявив умову задачі, має бути щось назразок такого:

#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);
    //якісь дії з цією матрицею....
    }

5

Re: динамічна пам"ять

дуже вдячнаа

6 Востаннє редагувалося 0xDADA11C7 (05.12.2014 02:49:13)

Re: динамічна пам"ять

P.Y.
Я гадаю, що викладач прямо вказує на вектор як складову бібліотеки мови С++, а не на вектор як структуру даних, що містить математичний об’єкт - вектор. Ці мавпочки не доросли до абстрактних категорій.

7

Re: динамічна пам"ять

Можливо. Якщо йдеться про класи стандартної бібліотеки C++, а не матриці й вектори, реалізовані засобами класичного C, мій варіант не підходить, на жаль.

8

Re: динамічна пам"ять

0xDADA11C7 написав:

P.Y.
Я гадаю, що викладач прямо вказує на вектор як складову бібліотеки мови С++, а не на вектор як структуру даних, що містить математичний об’єкт - вектор. Ці мавпочки не доросли до абстрактних категорій.

Прихований текст

як дізнатись, чи доріс я до абстрактних категорій?

9

Re: динамічна пам"ять

Прихований текст

Якщо для вас математична модель первинна,а засоби обчислення вторинні, то ви доросли до абстракцій

10

Re: динамічна пам"ять

Будь-ласка, поясніть хтось про змінні і пам'ять, я початківець, не можу розібратись в пам'яті:
Якщо створити змінну int a=1; , то вона буде займати місце в оперативній пам'яті. Коли память буде вільна?- коли змінна вийде за область видимості, чи після завершення програми? Чи все ж треба створювати вказівник з допомогою new і видаляти delete? Чим відрізняється вказівник int* a=&b; від int a=new int - адже перший вказівник не можна видалити, і він буде займати пам'ять до кінця дії програми? НІДЕ про це не написано. Буду вдячний.

11

Re: динамічна пам"ять

flatron написав:

Якщо створити змінну int a=1; , то вона буде займати місце в оперативній пам'яті. Коли память буде вільна?- коли змінна вийде за область видимості, чи після завершення програми? Чи все ж треба створювати вказівник з допомогою new і видаляти delete?

Вірно і перше, і друге, і третє. Пам’ять буде звільнена, коли змінна (створена таким чином, як ви написали) вийде
за межі видимості або після завершення програми. Використовувати new та delete не треба, а можна. В деяких випадках це виправдано.

12

Re: динамічна пам"ять

0xDADA11C7 написав:
Прихований текст

Якщо для вас математична модель первинна,а засоби обчислення вторинні, то ви доросли до абстракцій

Прихований текст

ліл, що з'явилось раніше, те й первинне, це ж очевидно

13

Re: динамічна пам"ять

FakiNyan

Не всі такі вумні, як ви.

Подякували: Chemist-i1