Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
for (j = 0; j < n; j++)
{
// печать элемента с номером [i, j],
// 2 знака после запятой
printf("%.2f\t", a[tmp + j]);
}
// переход на новую строку (каждая строка матрицы
// печатается с новой строки)
printf("\n");
}
}
// реализация функции замены диагональных элементов матрицы
void swap(float *a, int n)
{
int i, j, idx;
float min;
// цикл по строкам массива
for (i = 0; i < n; i++)
{
idx = i * n;
// считаем, что первый элемент строки является
// минимальным
min = a[idx];
// цикл по столбцам массива
for (j = 1; j < n; j++)
{
// если элемент с номером j в i-ой строке меньше
// текущего минимума
if (min > a[idx + j])
{
// то заменяется значение минимального
min = a[idx + j];
}
}
// запись минимального элемента строки
// на место диагонального
a[idx + i] = min;
}
}
Комментарий
В приведенном примере:
Подключаются библиотеки стандартного ввода/вывода stdio. h, функций работы с датой и временем time. h, функций выделения памяти, контроля процесса выполнения программы, преобразования типов stdlib. h. Объявляются константы для задания числа строк/столбцов матрицы и интервала изменения значения элементов. Объявляются функции заполнения массива fill, печати его элементов print и функции замены диагональных элементов минимальными значениями строки swap. Описывается функция main, в которой:- Создается массив. Выполняется заполнения массива с помощью объявленной функции fill. Выполняется печать массива с использованием объявленной функции print. Осуществляется замена диагональных элементов матрицы минимальными элементами строк с помощью функции swap. Выполняется печать массива с использованием объявленной функции print.
Пример решения задачи повышенной сложности
Задача:
Задана вещественная матрица, содержащая N строк и M столбцов. Заменить каждый элемент, исключая граничные, средним арифметическим соседних элементов по горизонтали, вертикали и диагоналям.
Решение:
#include <stdio. h>
#include <time. h>
#include <stdlib. h>
// определение константы числа строк матрицы
#define N 5
// определение константы числа столбцов матрицы
#define M 5
// определение левой границы изменения значений
#define A -2.0f
// определение правой границы изменения значений
#define B 2.0f
// определение функции заполнения матрицы вещественными элементами
void fill(float *a, int kRows, int kCols, float lb, float rb);
// определение функции печати матрицы
void print(float *a, int kRows, int kCols);
// определение функции замены элементов средним арифметическим окрестных
// результат записывается в новую матрицу b
void replace(float *a, float *b, int kRows, int kCols);
// определение функции копирования элементов матрицы src в dst
void copyMatrix(float *src, float *dst, int kRows, int kCols);
int main()
{
// создание квадратных вещественных матриц размера NxM
float a[N][M], b[N][M];
// вызов функции заполнения элементов матрицы
fill(&a[0][0], N, M, A, B);
// вызов функции печати матрицы
print(&a[0][0], N, M);
// двойной перевод курсора на новую строку
printf("\n\n");
// вызов функции замены элементов средним арифметическим окрестных
replace(&a[0][0], &b[0][0], N, M);
// вызов функции копирования матрицы из b в a
copyMatrix(&b[0][0], &a[0][0], N, M);
// вызов функции печати матрицы
print(&a[0][0], N, M);
// выход из основной функции
return 0;
}
// реализация функции заполнения матрицы вещественными элементами
void fill(float *a, int kRows, int kCols, float lb, float rb)
{
int i = 0, j, tmp;
// инициализация генератора случайных чисел
srand((unsigned int) time(0));
// цикл по строкам массива
for (; i < kRows; i++)
{
tmp = i * kRows;
// цикл по столбцам массива
for (j = 0; j < kCols; j++)
{
// rand() генерирует целое число в [0, RAND_MAX]
// ((float)rand()) / RAND_MAX переводит в [0, 1]
// линейное преобразование в [lb, rb]
a[tmp + j] = (rb-lb)*((float)rand())/RAND_MAX+lb;
}
}
}
// реализация функции печати матрицы
void print(float *a, int kRows, int kCols)
{
int i = 0, j, tmp;
// цикл по строкам массива
for (; i < kRows; i++)
{
tmp = i * kCols;
// цикл по столбцам массива
for (j = 0; j < kCols; j++)
{
// печать элемента с номером [i, j]
printf("%f\t", a[tmp + j]);
}
// переход на новую строку (каждая строка матрицы
// печатается с новой строки)
printf("\n");
}
}
// реализация функции замены элементов средним арифметическим окрестных
// результат записывается в новую матрицу b
void replace(float *a, float *b, int kRows, int kCols)
{
int i, j, rowIdxPrev, rowIdx, rowIdxNext,
idxPrev, idx, idxNext;
float sum;
// копирование первой строки матрицы
for (j = 0; j < kCols; j++)
{
b[j] = a[j];
}
// копирование последней строки матрицы
rowIdx = (kRows - 1) * kCols;
for (j = 0; j < kCols; j++)
{
idx = rowIdx + j;
b[idx] = a[idx];
}
for (i = 1; i < kRows - 1; i++)
{
// копирование элементов первого столбца
idx = i * kCols;
b[idx] = a[idx];
// копирование элементов последнего столбца
idx = i * kCols + kCols - 1;
b[idx] = a[idx];
}
// вычисление значений внутренних элементов
// цикл по строкам матрицы
for (i = 1; i < kRows - 1; i++)
{
// индекс первого элемента текущей строки
rowIdx = i * kCols;
// индекс первого элемента предыдущей строки
rowIdxPrev = rowIdx - kCols;
// индекс первого элемента следующей строки
rowIdxNext = rowIdx + kCols;
// цикл по столбцам матрицы
for (j = 1; j < kCols - 1; j++)
{
// индекс элемента над текущим
idxPrev = rowIdxPrev + j;
// индекс текущего элемента
idx = rowIdx + j;
// индекс элемента под текущим
idxNext = rowIdxNext + j;
// среднее арифметическое всех окрестных элементов
sum = (a[idxPrev-1]+a[idxPrev]+a[idxPrev+1]+
a[idx-1]+ a[idx+1]+
a[idxNext-1]+a[idxNext]+a[idxNext+1])/8.0f;
// запись результата в новую матрицу
b[idx] = sum;
}
}
}
// реализация функции копирования элементов матрицы src в dst
void copyMatrix(float *src, float *dst, int kRows, int kCols)
{
// !!! Можно использовать функцию memcpy(...)
// Библиотека: string. h
// Вызов: memcpy(dst, src, sizeof(float) * kRows * kCols);
int i = 0, size = kRows * kCols;
// цикл по всем элементам матрицы
for (; i < size; i++)
{
// копирование элемента из src в dst
dst[i] = src[i];
}
}
В приведенном примере:
Подключаются библиотеки стандартного ввода/вывода stdio. h, функций работы с датой и временем time. h, функций выделения памяти, контроля процесса выполнения программы, преобразования типов stdlib. h. Объявляются константы для задания числа строк истолбцов матрицы и интервала изменения значения элементов. Объявляются функции заполнения массива fill, печати его элементов print, а также функция формирования новой матрицы replace, которая заменяет все внутренние элементы исходной матрицы на среднее арифметическое соседей, и функция копирования матрицы copyMatrix. Описывается функция main, в которой:- Создается массив. Выполняется заполнения массива с помощью объявленной функции fill. Выполняется печать массива с использованием объявленной функции print. Осуществляется формирование новой матрицы на основании существующей с использованием функции replace. Новая матрица копируется в исходную с помощью функции copyMatrix. Выполняется печать массива с использованием объявленной функции print.
Простые задачи
Написать функцию (и тестирующую функцию main), которая:
Задана вещественная матрица, содержащая N строк и M столбцов. Найти минимальный элемент в каждой строке матрицы. Задана вещественная матрица, содержащая N строк и M столбцов. Найти минимальный элемент матрицы. Задана вещественная матрица. Заменить каждый элемент, стоящий на диагонали минимальным элементом столбца. Задана вещественная квадратная матрица. Проверить, является ли данная матрица симметричной. Задана вещественная матрица, содержащая N строк и M столбцов. Найти все числа, каждое из которых встречается в каждой строке матрицы. Дано множество, содержащее M векторов размерности N. Найти все пары ортогональных и коллинеарных векторов. Даны две прямоугольные матрицы. Вычислить произведение этих матриц. Матрицы описать как одномерные массивы. Дана верхнетреугольная вещественная матрица A размера NxN и вектор B, содержащий N элементов. Найти решение системы уравнений AX=B. Задана двоичная матрицы, содержащая N строк и 8 столбцов. Определить десятичные коды, соответствующие каждой строке матрицы. находит товар, за который была получена максимальная выручка и выводит номер этого товара и номер магазина, в котором он был продан; если таких товаров несколько, то формирует и выводит список: «номер товара – номер магазина». Используйте проект примера суммирует элементы матрицы по каждой из линий, параллельных главной диагонали и формирует массив таких сумм. элементы одномерного массива A(n2) построчно располагает в матрице B(n, n). находит среднее арифметическое элементов каждой строки матрицы A(m, n) и вычитает его из элементов этой строки. определяет, является ли заданная матрица ортонормированной (т. е. скалярное произведение каждой пары различных строк равно 0). определяет является ли квадратная матрица размером N*N симметричной относительно главной диагонали. Написать функции (и тестирующую функцию main), которые для заданной целой матрицы размером NxN вычисляет суммы элементов:- расположенных на главной диагонали; расположенных над главной диагональю; расположенных под главной диагональю; расположенных на побочной диагонали; расположенных над побочной диагональю; расположенных под побочной диагональю.
- находит значения максимального и минимального элемента и их разность; переставляет местами строки с заданными номерами i и k; переставляет местами столбцы с заданными номерами j и k; меняет местами первую строку и строку, у которой первый элемент является наибольшим среди элементов первого столбца; транспонирует матрицу, то есть меняет местами строки и столбцы этой матрицы; заменяет j-й столбец матрицы данным вектором.
- удаляет из данной матрицы mxn строку, содержащую минимальный элемент матрицы; удаляет из данной матрицы mxn столбец, содержащий минимальный элемент матрицы; удаляет из данной матрицы mxn все столбцы, содержащие только положительные элементы; в данную матрицу размера mxn вставляет строку из нулей перед данной строкой с номером k; в данную матрицу размера mxn вставляет столбец из нулей перед данной столбцом с номером k.
Задачи средней сложности
Написать функцию (и тестирующую функцию main), которая:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


