#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ROWS 4
#define COLS 3
// Comparison function for qsort
int compareStrings(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
// Function to sort each column of the matrix
void sortColumns(char *matrix[ROWS][COLS]) {
for (int col = 0; col < COLS; ++col) {
char *column[ROWS];
// Extract column values
for (int row = 0; row < ROWS; ++row) {
column[row] = matrix[row][col];
}
// Sort column using qsort
qsort(column, ROWS, sizeof(char *), compareStrings);
// Place sorted values back into matrix
for (int row = 0; row < ROWS; ++row) {
matrix[row][col] = column[row];
}
}
}
// Function to print the matrix
void printMatrix(char *matrix[ROWS][COLS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%s ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
char *matrix[ROWS][COLS] = {
{"ccc", "zzzz", "x"},
{"eeee", "aaa", "ffff"},
{"uu", "hhh", "uuu"},
{"bbb", "gg", "yyyyyy"}
};
printf("Original Matrix:\n");
printMatrix(matrix);
sortColumns(matrix);
printf("\nSorted Matrix:\n");
printMatrix(matrix);
return 0;
}
/*
run:
Original Matrix:
ccc zzzz x
eeee aaa ffff
uu hhh uuu
bbb gg yyyyyy
Sorted Matrix:
bbb aaa ffff
ccc gg uuu
eeee hhh x
uu zzzz yyyyyy
*/