Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #define N 10
- int input_row(int array[], int len, int row);
- int len_of_num(int num);
- void print_array_cutted(int array[], int len, int to_cut);
- void print_array_wo_middle(int array[], int len, int elements);
- void print_array(int array[], int len);
- typedef int matr_t[N][N];
- int main(void)
- {
- matr_t matrix;
- int row, coll;
- int i;
- //int j;
- printf("Input number of rows ");
- if ((scanf("%i", &row) != 1) || (row <= 0) || (row > 10))
- {
- printf("Wrong input!");
- return 1;
- }
- printf("Input number of collumns ");
- if ((scanf("%i", &coll) != 1) || (coll <= 0) || (coll > 10))
- {
- printf("Wrong input!");
- return 1;
- }
- for (i = 0; i < row; i++)
- {
- if (input_row(matrix[i], coll, i))
- {
- printf("Wrong input!");
- return 1;
- }
- }
- printf("\n\nInitial matrix:");
- for (i = 0; i < row; i++)
- {
- printf("\n");
- print_array(matrix[i], coll);
- }
- int how_m_to_insert [row];
- int coll_count = coll;
- for (i = 0; i < row / 2; i++)
- {
- if (coll_count > 2)
- {
- how_m_to_insert[i] = coll_count;
- how_m_to_insert[row - 1 - i] = coll_count;
- coll_count -= 2;
- }
- else
- {
- how_m_to_insert[i] = coll_count;
- how_m_to_insert[row - 1 - i] = coll_count;
- }
- }
- if (row % 2) how_m_to_insert[row / 2] = coll_count;
- printf("\n\nProcessed Matrix:\n");
- for (i = 0; i < row; i++)
- {
- print_array_cutted(matrix[i], coll, (coll - how_m_to_insert[i]));
- printf("\n");
- }
- //int how_m_to_insert [row];
- //int coll_count = 2;
- coll_count = 2;
- for (i = 0; i < row / 2; i++)
- {
- if (coll_count < coll)
- {
- how_m_to_insert[i] = coll_count;
- how_m_to_insert[row - 1 - i] = coll_count;
- coll_count += 2;
- }
- else
- {
- how_m_to_insert[i] = coll_count;
- how_m_to_insert[row - 1 - i] = coll_count;
- }
- }
- if (row % 2)
- how_m_to_insert[row / 2] = coll;
- else
- {
- how_m_to_insert[row / 2] = coll;
- how_m_to_insert[(row / 2) - 1] = coll;
- }
- printf("\n\nProcessed Matrix:\n");
- for (i = 0; i < row; i++)
- {
- print_array_wo_middle(matrix[i], coll, how_m_to_insert[i]);
- printf("\n");
- }
- return 0;
- }
- int input_row(int array[], int len, int row)
- {
- int i; // Счётчик
- int chr; // Число из потока ввода
- for (i = 0; i < len; i++)
- {
- printf("Input %i element of %i row of matrix: ", i + 1, row + 1);
- if (scanf("%i", &chr) == 1) array[i] = chr;
- else return -1;
- }
- return 0;
- }
- void print_array_cutted(int array[], int len, int to_cut)
- {
- int i, j;
- int spaces;
- for (i = 0; i < to_cut/2; i++)
- {
- spaces = len_of_num(array[i]);
- for (j = 0; j < spaces; j++) printf(" ");
- printf(" ");
- }
- for (i = to_cut / 2; i < (len - to_cut / 2); i++)
- {
- printf("%i ", array[i]);
- }
- return;
- }
- void print_array_wo_middle(int array[], int len, int elements)
- {
- int i, j;
- int spaces;
- if (elements == len)
- {
- for (i = 0; i < elements; i++)
- {
- printf("%i ", array[i]);
- }
- }
- else
- {
- for (i = 0; i < elements / 2; i++)
- {
- printf("%i ", array[i]);
- }
- for (i = elements / 2; i < (len - elements / 2); i++)
- {
- spaces = len_of_num(array[i]);
- for (j = 0; j < spaces; j++) printf(" ");
- printf(" ");
- }
- for (i = (len - elements / 2); i < len; i++)
- {
- printf("%i ", array[i]);
- }
- }
- return;
- }
- int len_of_num(int num)
- {
- int i;
- int len = 0;
- if (num < 0) len = 1;
- num = fabs(num);
- for (i = 1; i <= num; i *= 10) len++;
- return len;
- }
- void print_array(int array[], int len)
- {
- int i;
- for (i = 0; i < len; i++)
- {
- printf("%d ", array[i]);
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement