Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
25
Task/Matrix-transposition/C/matrix-transposition-1.c
Normal file
25
Task/Matrix-transposition/C/matrix-transposition-1.c
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#include <stdio.h>
|
||||
|
||||
void transpose(void *dest, void *src, int src_h, int src_w)
|
||||
{
|
||||
int i, j;
|
||||
double (*d)[src_h] = dest, (*s)[src_w] = src;
|
||||
for (i = 0; i < src_h; i++)
|
||||
for (j = 0; j < src_w; j++)
|
||||
d[j][i] = s[i][j];
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int i, j;
|
||||
double a[3][5] = {{ 0, 1, 2, 3, 4 },
|
||||
{ 5, 6, 7, 8, 9 },
|
||||
{ 1, 0, 0, 0, 42}};
|
||||
double b[5][3];
|
||||
transpose(b, a, 3, 5);
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
for (j = 0; j < 3; j++)
|
||||
printf("%g%c", b[i][j], j == 2 ? '\n' : ' ');
|
||||
return 0;
|
||||
}
|
||||
50
Task/Matrix-transposition/C/matrix-transposition-2.c
Normal file
50
Task/Matrix-transposition/C/matrix-transposition-2.c
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#include <stdio.h>
|
||||
|
||||
void transpose(double *m, int w, int h)
|
||||
{
|
||||
int start, next, i;
|
||||
double tmp;
|
||||
|
||||
for (start = 0; start <= w * h - 1; start++) {
|
||||
next = start;
|
||||
i = 0;
|
||||
do { i++;
|
||||
next = (next % h) * w + next / h;
|
||||
} while (next > start);
|
||||
if (next < start || i == 1) continue;
|
||||
|
||||
tmp = m[next = start];
|
||||
do {
|
||||
i = (next % h) * w + next / h;
|
||||
m[next] = (i == start) ? tmp : m[i];
|
||||
next = i;
|
||||
} while (next > start);
|
||||
}
|
||||
}
|
||||
|
||||
void show_matrix(double *m, int w, int h)
|
||||
{
|
||||
int i, j;
|
||||
for (i = 0; i < h; i++) {
|
||||
for (j = 0; j < w; j++)
|
||||
printf("%2g ", m[i * w + j]);
|
||||
putchar('\n');
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int i;
|
||||
double m[15];
|
||||
for (i = 0; i < 15; i++) m[i] = i + 1;
|
||||
|
||||
puts("before transpose:");
|
||||
show_matrix(m, 3, 5);
|
||||
|
||||
transpose(m, 3, 5);
|
||||
|
||||
puts("\nafter transpose:");
|
||||
show_matrix(m, 5, 3);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue