Указатели. Как создать подобную конструкцию (в приложении)?

Дан указатель double **p = 0;

Нужно создать конструкцию вида:

5baa898327734feab46b0760c3997d1b.png
Длина массива вводится предварительно с клавиатуры. Обнулите все элементы массива. Поместите в первый и последний элементы число 2 и выведите массив на экран. Удалите все динамические объекты.

Мой код:

double **p = 0;
    int size = 0;
    cout << "Введите размер массива: ";
    size = inputInt();
    cout << "Размер массива: " << size << endl; 
    if (size <= 1) {
        size = 1;
    }
    p = new double*[size];
    for (int i = 0; i < size;i++) {
        p[i] = new double(0);
        cout << p[i] << "\t";
    }
    **p = 2;
    *p[size-1] = 2;
    for (int i = 0; i < size;i++) {
        cout << *p[i] << "\t";
    }    

     for (int i = 0; i < size;i++) {
        delete[] p[i];
    }
    delete[] p;


Но меня терзают смутные сомнения, я считаю, что мой код является конструкцией вида:
04df26c16601448d972156de0bd45cd8.png
Скажите, так ли это?
Не могли бы вы мне словами объяснить, что значит 1-ая конструкция?
  • Вопрос задан
  • 467 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
p -> x -> []
double **p;
p = new double *;
*p = new double[size];
*p[i] = ...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
Да, это так. Зачем вам вообще указатель на указатель в этой лабораторке?
Как-то так надо делать первый рисунок
p = new (double*)[1];
p[0] = new double[size];
Ответ написан
@abcd0x00
Код
#include <iostream>

using namespace std;

int main()
{
    double **p = 0;

    p = new double *;

    int size;
    cout << "Input size: ";
    cin >> size;

    *p = new double[size];

    for (int i = 0; i < size; i++)
        *(*p + i) = 0;

    **p = *(*p + size - 1) = 2;

    cout << "size: " << size << endl;
    for (int i = 0; i < size; i++)
        cout << *(*p + i) << " ";
    cout << endl;

    delete [] *p;
    delete p;
    p = 0;

    return 0;
}



Вывод
[guest@localhost cpp]$ .iso++ t.cpp -o t
[guest@localhost cpp]$ ./t
Input size: 10
size: 10
2 0 0 0 0 0 0 0 0 2 
[guest@localhost cpp]$
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы