無題
Posted: 2009年12月16日(水) 13:14
配列ファイル(下は、任意の数字)
12
←空白
315
2132
23
を読み込み、
1 322
2 113
53
2
↑
空
白
の転置行列(空白の行も、列に対応)をするプログラムは作成できるのでしょうか?
12
←空白
315
2132
23
を読み込み、
1 322
2 113
53
2
↑
空
白
の転置行列(空白の行も、列に対応)をするプログラムは作成できるのでしょうか?
1 3 2 2
2 1 1 3
5 3
2
1
/****************ファイル読み込み********************/
file=fopen("r.txt","r");
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
fscanf(file,"%d", &PixelData[j]);
}
}
fclose(file);
/*******************ファイル書き込み****************/
file=fopen("w.txt","w");
for(j=0; j<PI_W; j++){
for(i=1+j; i<PI_H; i++){
buf=PixelData[j];
PixelData[j]=PixelData[j];
PixelData[j]=buf;
if(PixelData[j]>0)fprintf(file,"%d ",PixelData[j]);
}fprintf(file,"\n");
}
fclose(file);#include <stdio.h>
#include <string.h>
#define PI_H 5
#define PI_W 5
int main(void)
{
FILE *file;
char PixelData[PI_H][PI_W];
int read, i, j;
char buf;
memset(PixelData, ' ', sizeof(PixelData));
/****************ファイル読み込み********************/
file=fopen("r.txt","r");
for(i=0; i < PI_H; i++){
for(j=0; ; j++){
read = fgetc(file);
if (read == '\n' || read == EOF) {
break;
}
if (j < PI_W) {
PixelData[j] = (char)read;
}
}
}
fclose(file);
/*******************入れ替え****************/
for(j=0; j<PI_W; j++){
for(i=1+j; i<PI_H; i++){
buf=PixelData[j];
PixelData[j]=PixelData[j];
PixelData[j]=buf;
}
}
/*******************ファイル書き込み****************/
file=fopen("w.txt","w");
for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
fprintf(file, "%c", PixelData[j]);
}
fprintf(file, "\n");
}
fclose(file);
return 0;
}for(i=0; i<PI_H; i++){
for(j=0; j<PI_W; j++){
printf("%d ", PixelData[j]);
}
printf("\n");
}