Вопрос № 91410: Здравствуйте, уважаемые эксперты. У меня такой вопрос: как переделать задачу (она в приложении) так,чтобы в ней использовался массив указателей. Задача звучит так: <Ввести двумерный квадратный массив. Посчитать сумму элементов, расположенных выше ...
Вопрос № 91.410
Здравствуйте, уважаемые эксперты. У меня такой вопрос: как переделать задачу (она в приложении) так,чтобы в ней использовался массив указателей. Задача звучит так: <Ввести двумерный квадратный массив. Посчитать сумму элементов, расположенных выше главной дигонали.> Задача в приложении решена без использования массива указателей.
Отвечает: Sov
Здравствуйте, Tochkaopori!
...
int str=10;
int stb=10;
int **A=new int *[str];//выделили память под массив указателей на строки массива
for(int i=0;i<str;i++)//выделили память под каждую строку
A[i]=new int [stb];
...
Ответ отправил: Sov (статус: 4-ый класс)
Ответ отправлен: 14.06.2007, 19:32
Отвечает: Garmash Dima
Здравствуйте, Tochkaopori!
Желательно использовать переменные типа auto, а не глобальные переменные
В приложении программа.
переделке/добавлению подвергнуты строки с комментариями.
Приложение:
Ответ отправил: Garmash Dima (статус: 1-ый класс)
Ответ отправлен: 14.06.2007, 19:42 Оценка за ответ: 5 Комментарий оценки: Спасибо большое! Вы мне очень помогли.
Отвечает: Терсков Сергей
Здравствуйте, Tochkaopori!
Вообще-то ваша программа не совсем верно работает. Например, считаются элементы не только над главной диагональю, но и непосредственно ее элементы. Да и цикл подсчета элементов проходит по все матрице, хотя это и не нужно. И вот в этом цикле
for(;j<=n-1;j++)
S+=A[i][j+1];}
когда j достигнет значения n-1, мы обратимся к элементу A[i][n], то есть за границы массива, что приведет к ошибке исполнения.
Так что вот переделанный код с динамическим выделением памяти (и, кстати, динамическим удалением, о чем не нужно забывать).
Приложение:
Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 15.06.2007, 03:02