English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

如何用程式語言將文字檔內容做90、180、270度的轉向?

假如說我有一個文字檔(.txt)的內容如下

 890
1234567
7654321
 098

我要如果利用程式語言(c或VB)將這個文字內容做90、180、270度
的轉向呢?也就是說讓這先文字就向圖片檔一樣,可以做整個顯
示上的轉向?

有點困難
我想了很久,希望有人可以幫我解解惑阿~好苦惱

這有辦法可以成功嗎?

2006-12-11 17:00:00 · 2 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

2 個解答


#include

#include

#include

#define MAX 256

char **b, **r;


void dim2(char ***A, int h, int w)
{ int i, w0;
char *buf, **idx;
*A = 0; // Assume allocation fail

if ( idx = (char **) malloc(sizeof(char*) * h) ) // if (!NULL)

if ( buf = (char *) malloc(sizeof(char ) * h * w) )
{ for (w0=i=0; i idx[i] = &buf[w0];
*A = idx;
}
else free(idx); // Can not alloc the 2nd, free the 1st

}


void show(int h)
{ int i;
for (i=0; i printf(b[i]);
printf("\n");
}


void rota(int h, int w)
{ int i, j;
char **t;
for (i=0; i for (j=0; j r[i][h-j-1] = b[j][i];
for (i=h+1,j=0; j r[j][h] = '\n', r[j][i] = 0;
t = r, r = b, b = t;
}


int main(int argc, char **argv)
{ int i, j, h, w;
FILE *f;
if (f=fopen(argv[1], "r"))
{ dim2(&b, MAX, MAX);
dim2(&r, MAX, MAX);
for (w=h=0; h { i = strlen(b[h]);
if (i>w) w = i;
}
for (i=0; i { for (j=strlen(b[i])-1; j b[i][j] = ' ';
b[i][j] = '\n', b[i][w] = 0;
}
for (i++,j=0; j b[h][j] = '\n', b[i][j] = 0;
w--;
show(h); // Original

rota(h, w); show(w); // 90

rota(w, h); show(h); // 180

rota(h, w); show(w); // 270

free(*b); free(b);
free(*r); free(r);
} else

printf("Please add a valid text_file_name following the command\n");
system("PAUSE");
return 0;
}

2006-12-20 02:48:54 · answer #1 · answered by ? 7 · 0 0

這種東西我在工程數學上有聽過不過那節課我在睡覺
我只知道要把他存入2維陣列
然後使用工程數學裡面有個公式可以將資料交換,但是我不記得了,目前只記得要把他存在2維陣列,然後使用回圈去調動他的位子
剩下的你自己想看看,這個只是個起頭,最多使用土法煉鋼慢慢去掉他位子

2006-12-11 20:02:44 · answer #2 · answered by 永恆的破壞 5 · 0 0

fedest.com, questions and answers