Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Пример программы на обработку двумерного массива (матрицы)




 

//Массивы динамические двумерные

//Программа находит строку введенного с клавиатуры

//двумерного массива целых чисел, содержащую максимальную

//сумму элементов

 

#include<iostream.h>

#include <locale.h>

//using namespace std;

 

typedef int telem; //определение типа элементов массива

typedef telem *tstr; //определение типа "указатель на telem"

typedef tstr *tmatr; //определение типа "указатель на указатель на telem"

void inputmatr(tmatr a, int str, int sto);

void outputmatr(tmatr a, int str, int sto);

telem poisk_str(tmatr a, int str, int sto, int &imax);

 

int main()

{ int i, j;

int imax; //номер строки с максимальной суммой элементов

int n; //число строк матрицы

int m; //число столбцов матрицы

tmatr a; //объявляется переменная-указатель на указатель на telem

telem max; //максимальная сумма элементов

setlocale(LC_ALL,"Russian");

cout << "\nВведите количество строк и столбцов матрицы: ";

cin >> n >> m;

a = new tstr [n]; //выделение динамической памяти под массив

//указателей на строки массива

for(i = 0; i < n; i++) //цикл выделения памяти под каждую строку

*(a + i) = new telem [m]; //каждому элементу массива указателей

//на строки присваивается адрес начала

//области памяти, выделяемой под строку

inputmatr(a, n, m);

cout << "Исходная матрица:\n";

outputmatr(a, n, m);

max = poisk_str(a, n, m, imax);

cout << "Максимальная сумма=" << max << " элементов строки содержится";

cout << endl << "в " << imax << "-й строке исходного массива " << endl;

cout << endl << "Для завершения нажмите <Enter>";

//Освобождение динамической памяти

for(i = 0; i < n; i++)

delete a[i];

delete a;

return 0;

}

 

void inputmatr(tmatr a, int str, int sto)

{ cout << "Введите построчно через пробел элементы" << endl;

cout << "двумерного массива размера " << str << "x" << sto << endl;

cout << "После ввода строки нажимайте <Enter>" << endl;

for(int i = 0; i < str; i++)

for(int j = 0; j < sto; j++)

cin >> *(*(a + i) + j);

}

 

telem poisk_str(tmatr a, int str, int sto, int &imax)

{telem max, //максимальная сумма элементов

pr; //текукущая сумма

imax = 0; //предполагаем, что максимальная сумма элементов в 0-ой строке

max = 0;

for(int j = 0; j < sto; j++)

max += *(*(a + 0) + j);

for(int i = 1; i < str; i++)

{pr = 0;

for(j = 0; j < sto; j++)

pr += *(*(a + i) + j);

if(max < pr)

{imax = i;

max = pr;

}

}

return max;

}

 

void outputmatr(tmatr a, int str, int sto)

{ int i, j;

for(i = 0; i < str; i++)

{for(j = 0; j < sto; j++)

cout << *(*(a + i) + j) << ' ';

cout << '\n';

}

}


Лабораторная работа №6





Поделиться с друзьями:


Дата добавления: 2015-09-20; Мы поможем в написании ваших работ!; просмотров: 608 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Своим успехом я обязана тому, что никогда не оправдывалась и не принимала оправданий от других. © Флоренс Найтингейл
==> читать все изречения...

2396 - | 2210 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.