Помощничек
Главная | Обратная связь


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

Модельная задача многомерные массивы, ввод из файла



Написать программу, определяющую, в какой строке целочисленной матрицы m х n находится самая длинная серия одинаковых элементов.

Под серией имеются в виду элементы, расположенные подряд.

Математическая модель

В виде функции здесь удобно оформить решение основной задачи, оставив глав­ной программе только ввод исходных данных и вывод результатов. Для удобства отладки ввод массива в программе выполняется из текстового файла. Первая строка файла содержит два числа значения размерностей, каждая следующая строка — набор чисел для одной строки матрицы. Память под массив выделяется в цикле для того, чтобы можно было задавать обе размерности массива в виде переменных.

Программа

#include <fstream.h>

int ser_equals(int **a, const int m, const int n);

int main()

{

ifstream fin ("matrix.txt", ios::in | ios::nocreate);

//fin идентификатор файла, “matrix.txt” – имя файла

if (!fin)

{

cout << "File matrix.txt is absent" << endl; return 0;

}

int m, n, i, j;

 

fin >> m >> n; //чтение размерностей массива

int **a = new int *[m]; for(i = 0; i < m; i++) a[i]= new int[n];

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

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

for (j = 0; j < n; j++) fin >> a[i][j];

int line = ser_equals(a, m, n); // вызов функции

if (line >= 0)

cout << " The longest series is in the string number " << line<<endl;

else

cout << " There not any series ";

return 0;

}

 

int ser_equals(int **a, const int m, const int n)

{

int i, j, count, line = -1, maxcount = 0;

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

{

count = 0;

for (j = 0; j < n - 1; j++)

{

if (a[i][j] == a[i][j + 1] ) count++;

else

{

if (count > maxcount)

{

maxcount = count; line = i;

}

count = 0;

}

}

if (count > maxcount)

{

maxcount = count; line = i;

}

}

return line;

}

Для удобства отладки ввод массива в программе выполняется из текстового файла. Первая строка файла содержит значения размерностей матрицы, каждая следующая строка — набор чисел для одной строки матрицы. Файл "matrix.txt" нужно поместить в одну папку с кодом программы.

91. Найти максимальное из чисел, встречающихся в заданной матрице более одного раза

92. Расстояние между k-й и l-й строками матрицы A = ||aij|| определяется как ∑|akj||alj| по i. Указать номер строки, максимально удаленной от первой строки заданной матрицы.

93. Для заданной перестановки A чисел 1, …, 100 найти такое k ≥ 3, при котором R(k) = min{|Ak(i) - i|, i = 1, …, 100} максимально. Для получения перестановки использовать функцию Rnd –генерации случайных чисел.

94. Задана перестановка A чисел 1, …, 100. Для каждого i, 1≤ i≤ 100, указать такое (зависящее от i) минимальное значение k, при котором Ak(i) = i.

95. Определить норму заданной матрицы A = ||aij||, то есть число maxij |aij|

96. Начиная с центра, обойти по спирали все элементы квадратной матрицы размером 13×13 (распечатывая их в порядке обхода).

97. Цепью вектора a = (a1, a2, …, an) называется всякая последовательность индексов i1, i2, …, ik, такая, что = ij+1, (j = 1, …, k-1). Построить максимальную по длине цепь заданного вектора.

98. По заданной квадратной матрице размером 10×10 построить вектор длиной 19, элементы которого – максимумы элементов диагоналей, параллельных главной диагонали.

99. Две строки матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках. Найти количество строк в максимальном множестве попарно непохожих строк заданной матрицы.

100. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.

Математическая модель

В задаче требуется отсортировать строки матрицы по некоторому критерию. Применение стандартного метода пузырька требует многократного вычисления критерия сортировки. Для повышения скорости работы программы построим вектор характеристик строк матрицы, состоящий из номера строки и характеристики.

Псевдокод

Построить вектор характеристик (N, X), где N номер строки, X ее характеристика

Отсортировать вектор характеристик по X

Поменять строки матрицы, согласно порядку вектора

101. Построить целочисленную матрицу А = ||aij|| размером 10×10 следующим образом:

aij =

где - число сочетаний из i элементов по j. Для определения числа сочетаний реализовать функцию.

102. Найти номер строки заданной целочисленной матрицы размером 10×10, в которой находится самая длинная серия.

103. Для заданной целочисленной матрицы найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.

104. Для заданной целочисленной матрицы найти максимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.

105. По матрице A = ||aij|| размером 10×10 построить матрицу B = ||bij|| того же размера, элемент bij которой равен минимальному элементу треугольника в А, определяемого элементом aij:

 

106. По матрице A = ||aij|| размером 10×10 построить матрицу B = ||bij|| того же размера, где bij определяется следующим образом. Через aij проведем в А диагонали, параллельные главной и побочной диагоналям; bij определяется как максимум в заштрихованной части матрицы А.

107. Дана матрица А размером 20×20. Считая ее составленной из 100 квадратов размером 2×2 и переставляя эти квадраты, преобразовать А так, чтобы в результирующей матрице для всяких двух квадратов В и С выполнялось следующее условие: если сумма элементов В меньше суммы элементов С, то В лежит либо выше, либо левее (когда В и С на одной горизонтали) квадрата С.

108. Говорят, что матрица имеет седловую точку aij, если элемент aij является минимальным в i-й строке и максимальным в j-м столбце. Найти номер строки и столбца какой-нибудь седловой точки заданной матрицы.

109. Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены (либо по возрастанию, либо по убыванию).

110. Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.

111. Подсчитать количество столбцов заданной целочисленной матрицы размером 20×20, которые составлены из попарно различных чисел.

112. Подсчитать количество строк заданной целочисленной матрицы размером 20×20, являющихся перестановкой чисел 1, 2, …, 20.

113. Напечатать элементы заданной матрицы размером 10×10 в следующем порядке:

114. Напечатать элементы заданной матрицы размером 10×10 в следующем порядке:

115. Среди строк заданной целочисленной матрицы, содержащих только нечетные элементы, найти строку с максимальной суммой модулей элементов.

116. Среди столбцов заданной целочисленной матрицы, содержащих только такие элементы, которые по модулю не больше 10, найти столбец с минимальным произведением элементов.

117. Для заданной матрицы размером 10×10 найти такие k, что k-я строка матрицы совпадает с k-м столбцом.

118. Пусть m(A, i) означает номер столбца матрицы А, в котором находится последний в строке минимум i-й строки. Проверить, верно ли, что для заданной матрицы А размером 20×20 выполняются неравенства.

m(A, 1) ≤ m(A, 2) ≤ … ≤ m(A, 20).

119. Соседями элемента aij в матрице назовем элементы akl с i – 1 ≤ k ≤ i +1, j – 1 ≤ l ≤ j+1, (k, l) ≠ (i, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10×10.

120. Всякий элемент aij заданной квадратной матрицы A = ||aij|| размером 20×20 задает разбиение матрицы на четыре клетки с индексами {(k, l) : 1 ≤ k < i, 1≤ l <j}, {(k, l) : 1 ≤ k < i , j < l ≤ 20}, {(k, l) : i < k ≤ 20, 1 ≤ l < j} и {(k, l) : i < k ≤ 20, j < l ≤ 20}, хотя бы одна из которых непуста. Построить матрицу B = ||bij|| того же размера, в которой bij равен минимуму среди максимальных элементов непустых клеток, определяемых в А элементом aij.

121. Определить, являются ли линейно независимыми три заданных вектора целых чисел длиной 30.

122. Проверить, удовлетворяет ли заданная матрица A = ||aij|| размером 10×10 следующему условию: для всех i > 1 и для всех j >1 верно неравенство aij ≥ ai-1,j + ai,j-1.

123. Для двух заданных матриц одинакового размера проверить, можно ли получить вторую матрицу из первой применением (конечного числа раз) операций транспонирования относительно главной и побочной диагоналей.

124. Найти распечатать строку заданной целочисленной матрицы размером 10×10, в которой длина максимальной серии минимальна.

125. Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей (см. задачу 171). Подсчитать количество локальных минимумов заданной матрицы размером 10×13.

126. В условиях предыдущей задачи найти максимум среди всех локальных минимумов заданной матрицы размером 10×12.

127. Определить, становится ли симметричной (относительно главной диагонали) заданная матрица размером 10×10 после замены на число 0 каждого локального минимума (см. задачу 177).

128. Напечатать элементы заданной матрицы размером 10×10 в следующем порядке:

129. Взаимно однозначное отображение элементов матрицы на себя можно задать с помощью двух целочисленных матриц: в первой указывать номер строки, куда переходит данный элемент, а во второй – номер столбца. Построить две матрицы, задающие отражение каждого элемента матрицы размером 10×10 на симметричный ему относительно главной диагонали.

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.