Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- const int N = 4; // размерность марицы
- int inputMatrix(float *matrix)
- {
- printf("Input matrix %dx%d\n", N, N);
- // в цикле вводим каждый элемент матрицы
- // доступ к нему получаем: кол-во столбцов * i + j
- int i, j;
- for (i = 0; i < N; i++)
- for (j = 0; j < N; j++)
- scanf("%f", &matrix[N * i + j]);
- return 0;
- }
- int outputMatrix(float *matrix)
- {
- // функция вывода матрицы
- int i, j;
- for (i = 0; i < N; i++)
- {
- for (j = 0; j < N; j++)
- {
- printf("%f ", matrix[N * i + j]);
- }
- printf("\n");
- }
- return 0;
- }
- int sortFirst(float *first, int *firstIndexes)
- {
- /*
- функция для сортировки первых элементов
- столбцов матрицы
- сортировка производится по методу "пузырька"
- в функцию передаются первые элементы столбцов
- и массив с индексами - они тоже сортируются в соответствии
- с сортировкой самих элементов - это поможет
- в создании новой матрицы
- */
- int i, counter, temp_i; // переменная для цикла, счетчик (для сортировки) и временная переменная для индекса
- float temp; // временная переменная для элемента массива
- do
- {
- counter = 0;
- for(i = 0; i < N - 1; i++)
- {
- if(first[i] > first[i + 1])
- {
- temp = first[i];
- first[i] = first[i + 1];
- first[i + 1] = temp;
- temp_i = firstIndexes[i];
- firstIndexes[i] = firstIndexes[i + 1];
- firstIndexes[i + 1] = temp_i;
- counter++;
- }
- }
- }
- while(counter != 0);
- return 0;
- }
- int main()
- {
- int i, j;
- float matrix[N * N], newMatrix[N * N], first[N];
- int firstIndexes[N];
- // индексы
- for (i = 0; i < N; i++)
- firstIndexes[i] = i;
- inputMatrix(matrix); // вводим матрицу
- for (i = 0; i < N; i++)
- {
- // в цикле получаем первые элементы столбцов
- first[i] = matrix[i];
- }
- sortFirst(first, firstIndexes); // сортируем
- // в цикле новую матрицу создаем
- for (i = 0; i < N; i++)
- {
- for (j = 0; j < N; j++)
- {
- newMatrix[N * i + j] = matrix[N * i + firstIndexes[j]];
- }
- }
- printf("\nNew matrix:\n");
- outputMatrix(newMatrix); // выводим
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement