Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <locale.h>
- #include <time.h>
- #define LEFT -25
- #define RIGTH 75
- int __cdecl random_matrix(int **, const size_t, const size_t, const int _left, int _rigth);
- void __cdecl show_matrix(int **, const size_t, const size_t);
- int __cdecl is_positive_column(int **, const size_t, const size_t);
- void __cdecl delete_matrix(int **, size_t);
- int ** __cdecl create_matrix(int **, const size_t, const size_t);
- void resign(int **, const size_t, const size_t);
- int main() {
- size_t rows, cols, index;
- int is_positive = 0;
- int ** matrix = NULL;
- setlocale(LC_CTYPE, "Russian_Russia.1251");
- printf("Введите строки: ");
- scanf_s("%i", &rows);
- printf("Введите столбцы: ");
- scanf_s("%i", &cols);
- srand((unsigned)time(NULL));
- matrix = create_matrix(matrix, rows, cols);
- if (random_matrix(matrix, rows, cols, LEFT, RIGTH)) {
- printf("Исходная матрица:\n");
- show_matrix(matrix, rows, cols);
- for (index = 0; index < cols; index++) {
- if (is_positive = is_positive_column(matrix, rows, index)) {
- if (index)
- resign(matrix, rows, index - 1);
- break;
- }
- if (is_positive && !index) break;
- }
- printf("Изменённая матрица:\n");
- show_matrix(matrix, rows, cols);
- }
- delete_matrix(matrix, rows);
- _getch();
- }
- int random_matrix(int ** _matrix, const size_t _rows, const size_t _cols, const int _left, int _rigth) {
- size_t row, col;
- if (_left >= _rigth) return 0;
- if (_left < 0 && _rigth >= 0) _rigth += abs(_left);
- else if (_left < 0 && _rigth < 0) _rigth = abs(_left) - abs(_rigth);
- else if (_left >= 0 && _rigth > 0) _rigth -= _left;
- for (row = 0; row < _rows; row++)
- for (col = 0; col < _cols; col++)
- _matrix[row][col] = rand() % _rigth + _left;
- return 1;
- }
- void show_matrix(int ** _matrix, const size_t _rows, const size_t _cols) {
- size_t row, col;
- if (_cols && _rows)
- for (row = 0; row < _rows; row++, printf("\n"))
- for (col = 0; col < _cols; col++)
- printf("%5i", _matrix[row][col]);
- else printf("Нет данных для отображения!\n");
- }
- int is_positive_column(int ** _matrix, const size_t _rows, const size_t _col_index) {
- size_t row;
- for (row = 0; row < _rows; row++)
- if (_matrix[row][_col_index] < 0)
- return 0;
- return 1;
- }
- void resign(int ** _matrix, const size_t _rows, const size_t _col_index) {
- size_t row;
- for (row = 0; row < _rows; row++)
- _matrix[row][_col_index] *= -1;
- }
- void delete_matrix(int ** _matrix, size_t _rows) {
- size_t row;
- for (row = 0; row < _rows; row++)
- free(_matrix[row]);
- free(_matrix);
- }
- int ** create_matrix(int ** _matrix, const size_t _rows, const size_t _cols) {
- size_t row;
- _matrix = (int **)calloc(_rows, sizeof(int *));
- for (row = 0; row < _rows; row++)
- _matrix[row] = (int *)calloc(_cols, sizeof(int));
- return _matrix;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement