Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Обращение к элементам двумерного динамического массиваСодержание книги
Поиск на нашем сайте Адресация элементов динамического массива осуществляется с помощью индексированного имени. Синтаксис: ИмяМассива[ВыражениеТипаКонстанты][ВыражениеТипаКонстанты];или ИмяМассива[ЗначениеИндекса][ЗначениеИндекса];Например: mas [5][7] – индекс задается как константа, sl [i][j] – индекс задается как переменная, array[4*p][p+5] – индекс задается как выражение. Пример 3. Сформируйте и выведите на экран единичную матрицу с целыми элементами, вводя ее порядок с клавиатуры. #include "stdafx.h"#include <iostream>using namespace std; int _tmain(int argc, _TCHAR* argv[]){ int n,i,j; int **matr;//указатель для массива указателей cout << "Input matrix order:"; cin >> n; matr = new int *[n]; //выделение памяти под массив указателей for(i=0; i<n; i++){ matr[i] = new int[n]; //выделение памяти для массива значений for (j=0; j<n; j++) //заполнение матрицы matr[i][j] = (i==j? 1: 0); } cout << "Result: "; for(i=0; i<n; i++){ cout << "\n"; for (j=0; j<n; j++) cout << " " << matr[i][j]; delete matr[i]; //освобождение памяти из-под массива значений } delete [] matr; //освобождение памяти из-под массива указателей system("pause"); return 0;}Пример 4. Вычислить сумму элементов, лежащих на диагоналях матрицы N x N (обратить внимание на четность -нечетность числа N). Размер массива должен задаваться пользователем с клавиатуры. #include "stdafx.h"#include <iostream>using namespace std;#include <time.h>void gen (int nn,int a, int b,int ***mas); //объявление функции генерации массиваint summa(int nn, int **mas);/*объявление функции вычисления суммы заданных элементов массива*/void out (int nn,int **mas);//объявление функции вывода массива int _tmain(int argc, _TCHAR* argv[]){ int **mass, n; int s; printf("Введите n: "); scanf("%d",&n); printf("\nГенерация массива \n"); gen(n,0,10,&mass); s=summa(n,mass); out(n,mass); printf("\nСумма элементов = %d",s); system("pause"); return 0;} void gen(int nn, int a, int b, int ***mas){ //функция генерации массива int i,j; srand(time(NULL)*1000); *mas=(int**)malloc(nn*sizeof(int*)); for (i=0;i<nn;i++){ (*mas)[i]=(int*)malloc(nn*sizeof(int)); for (j=0;j<nn;j++) (*mas)[i][j]=rand()%(b-a)+a; }} int summa(int nn, int **mas) { //функция вычисления суммы элементов диагоналей int i,j, sum=0; for (i=0;i<nn;i++) for (j=0;j<nn;j++) { if ((i==j) || (i==nn-j-1)) { //нахождение элементов диагоналей sum+=mas[i][j]; //суммирование элементов диагоналей } } return sum;} void out (int nn,int **mas){ //функция вывода массива int i,j; for (i=0;i<nn;i++) { for (j=0;j<nn;j++) printf("%4d",mas[i][j]); printf("\n"); free (mas[i]); } free (mas);}В языке С++ предусмотрено использование указателя вида *** mass. В данном примере в функцию генерации массива передается не адрес указателя, а его значение. Передача фактического параметра при вызове функции осуществляется через определение адреса указателя ** mass. Задания для выполнения
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-07-18; просмотров: 464; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.) |