Цитата:
Сообщение от Nelson17
Дана целочисленная матрица размера m на n. Размер матрицы задается динамически во время выполнения программы. Для хранения элементов матрицы использовать динамическое выделение памяти. Матрица заполняется случайными числами в диапазоне от -50 до 50. Используя алгоритм пузырьковой сортировки отсортировать элементы каждой четной строки по возрастанию, а нечетную - по убыванию. Заполнение матрицы случайными числами, сортировку элементов строк матрицы и вывод матрицы на экран организовать в виде функции.
Задание вроде не сильное с первого взгляда, но написать не могу. Помогите по-возможности. С++
|
Не путай С и С++
Вот:
Код:
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
void fill_matrix(int* matrix, int m, int n);
void print_matrix(int* matrix, int m, int n);
void sort_matrix(int* matrix, int m, int n);
int main(int argc, char** argv)
{
int m, n;
(void) printf("Введите количество строк: ");
(void) scanf("%d", &m);
(void) printf("Введите количество столбцов: ");
(void) scanf("%d", &n);
int * matrix = malloc(m * n * sizeof(int));
fill_matrix(matrix,m,n);
print_matrix(matrix,m,n);
(void) printf("Сортировка\n");
sort_matrix(matrix,m,n);
print_matrix(matrix,m,n);
return 0;
}
void fill_matrix(int* matrix, int m, int n){
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
int r = rand() % 51;
matrix[m*i + j] = (r % 2)?-r:r;
}
}
}
void print_matrix(int* matrix, int m, int n){
(void) printf("\nМатрица [%d,%d]\n", m, n);
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
(void) printf("%3d ", matrix[m*i + j]);
}
(void) printf("\n");
}
(void) printf("\n");
}
void sort_matrix(int* matrix, int m, int n){
for(int i = 0; i < m; i++){
bool cond = true;
while(cond) {
cond = false;
for(int j = 0; j < n - 1; j++){
if(i % 2){
if(matrix[m*i + j] < matrix[m*i + j + 1])
cond = true;
} else {
if(matrix[m*i + j] > matrix[m*i + j + 1])
cond = true;
}
if(cond){
int swp = matrix[m*i + j];
matrix[m*i + j] = matrix[m*i + j + 1];
matrix[m*i + j + 1] = swp;
}
}
}
}
}
Результаты в таком виде:
Цитата:
rocky@rocky-laptop:~$ ./s
Введите количество строк: 4
Введите количество столбцов: 4
Матрица [4,4]
10 -49 -9 34
32 -37 -37 48
-45 -19 -5 -31
20 -19 -29 22
Сортировка
Матрица [4,4]
34 10 -9 -49
-37 -37 32 48
-5 -19 -31 -45
-29 -19 20 22
|
Если не захочет компилироваться в среде, которую ты используешь, то заюзай gcc:
Цитата:
rocky@rocky-laptop:~$ gcc -Wall -pedantic -std=c99 simple_lab3.c -o s
|
Цитата:
я забыл написать, что нужно написать на паскале)))
можешь переписать пожалуйста)
|
Какая неописюемая наглость :) Не могу, я паскаль последний раз видел на 1-м курсе, а это было лет 7 назад, но я запомнил, что его лучше не видеть :)
Перепиши сам, это не трудно
|