infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: dragu stelian din August 21, 2014, 18:56:29



Titlul: alocare dinamica
Scris de: dragu stelian din August 21, 2014, 18:56:29
Nu inteleg de ce nu ruleaza codul urmator.
Alocarea dinamica cu un pointer la intreg (int *p) sau pointer la pointer la intreg mi-a reusit.
Cand am incercat cu un pointer catre un tablou de intregi (*p)[col] codul nu ruleaza.
Stiu, dimensiunea tabloului trebuie sa fie o constanta, dar variabilele col si new primesc valori pana la compilarea liniei de cod
int (*p)[col] = (int(*)[col])new int*[row];.
De ce nu ruleaza ?

Cod:
#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
    int row, col;
    cout << "\n Numbers of rows: ";
    cin >> row;
    cout << "\n Numbers of columns: ";
    cin >> col;
    cout << "\n col = " << col << endl;
    int (*p)[col] = (int(*)[col])new int*[row];
    for (int i=0; i<row; i++)
    {
        for (int j=0; j<col; j++)
        {
            cout << "\n tab[" << i << "][" << j << "] = ";
            cin >> *(*(p+i)+j);
        }
    }
    cout << endl;
    for (int i=0; i<row; i++)
    {
        for (int j=0; j<col; j++)
            cout << "\t\t" << *(*(p+i)+j);
        cout << endl;
    }
    // free (p);
    delete[] p;
    p = NULL;
    return 0;
}