#include <stdio.h>
int main(int argc, char **argv){
int a,b,c,g,r,i,j,ll; int blue,green,red; FILE *fpi,*fpo;
unsigned long size,head,width,height,offset; unsigned long comp,isize,ucolor,icolor;
unsigned short plane,bitsize; unsigned long wreso,hreso;
unsigned char *image; char infile[1024] = "t.bmp"; char outfile[1024] = "g.bmp";
long ww,hh; long w3,h3; unsigned char *img; unsigned char *img2;
int bai1,bai2; bai1=1,bai2=3;
fpi=fopen(infile,”rb");
for(i=0;i<2;i++){c=getc(fpi);} for(i=0,size=0;i<4;i++){size += (getc(fpi))<<(8*i);}
for(i=0;i<4;i++){c=getc(fpi);}
for(i=0,offset=0;i<4;i++){offset += (getc(fpi))<<(8*i);}
↑と同じようhead,width,height,plane,bitsize,comp,isize,wreso,hreso,ucolor,icolorを書く(ただしplane,bitsizeはi<2)
hh=height*bai1/bai2; ww=width *bai1/bai2;
img2 = (unsigned char*)malloc(sizeof(char)*3*ww*hh);
for(j=0;j<hh;j++){
for(i=0;i<ww;i++){ int i1,j1,i2,j2; double x,pa,pb,pc,pd,x11,x21,x12,x22; int bb,gg,rr;
i1=(i*(width-1))/(ww-1); i2=i1+1; x=(i*(width-1)*1.0)/((double)(ww-1)); pa=x-i1; pb=i2-x; j1=(j*(height-1))/(hh-1); j2=j1+1; x=(j*(height-1)*1.0)/((double)(hh-1)); pc=x-j1; pd=j2-x;
x11=(double)img[j1*width*3+i1*3+0;] x21=(double)img[j1*width*3+i2*3+0];
x12=(double)img[j2*width*3+i1*3+0]; x22=(double)img[j2*width*3+i2*3+0];
bb=(((x11*pb+x21*pa)/(pa+pb))*pd+((x12*pb+x22*pa)/(pa+pb))*pc)/(pc+pd);
x11=(double)img[j1*width*3+i1*3+1]; x21=(double)img[j1*width*3+i2*3+1];
x12=(double)img[j2*width*3+i1*3+1]; x22=(double)img[j2*width*3+i2*3+1];
gg=(((x11*pb+x21*pa)/(pa+pb))*pd+((x12*pb+x22*pa)/(pa+pb))*pc)/(pc+pd);
x11=(double)img[j1*width*3+i1*3+2]; x21=(double)img[j1*width*3+i2*3+2];
x12=(double)img[j2*width*3+i1*3+2]; x22=(double)img[j2*width*3+i2*3+2];
rr=(((x11*pb+x21*pa)/(pa+pb))*pd+((x12*pb+x22*pa)/(pa+pb))*pc)/(pc+pd);;
img2[j*ww*3+i*3+0]=(unsigned char)(bb&0xff); img2[j*ww*3+i*3+1]=(unsigned char)(gg&0xff);
img2[j*ww*3+i*3+2]=(unsigned char)(rr&0xff); } }
w3=ww*3; h3=hh*3;
if((w3*3)%4==0){size=offset+w3*h3*3;} else{size= offset+w3*h3*3-(4-(w3*3)%4);}
isize = size-offset;
fpo=fopen(outfile,"wb"); putc('B', fpo); putc('M', fpo); for(i=0;i<4;i++){putc(((size>>(8*i))&0xff),fpo);} for(i=0;i<4;i++){putc(0x0,fpo);}
for(i=0;i<4;i++){putc((((offset)>>(8*i)&0xff),fpo);} ↑と同じようhead,width,height,plane,bitsize,comp,isize,wreso,hreso,ucolor,icolorを書く(ただしplane,bitsizeはi<2)
fwrite(&w3 ,sizeof(long),1,fpo);
↑と同じように&h,&offset,&head,&width,&height,&plane,&bitsize,&comp,&isize,&wreso,&hreso,&ucolor,&icolorを書く
for(jj=0;jj<3;jj++){
for(j=hh-1;j>=0;j--){
ll=0;
for(ii=0;ii<3;ii++){
for(i=0;i<ww;i++){
putc(img2[j*ww*3+i*3+0],fpo); putc(img2[j*ww*3+i*3+1],fpo); putc(img2[j*ww*3+i*3+2],fpo);
ll+=3; } } ll=ll%4;
if(ll!=0){for(i=0;i<(4-ll);i++)putc(0x0,fpo);} } } printf("Done\n"); fclose(fpo);
printf("%s -> %s\n",infile,outfile); }
No.2ベストアンサー
- 回答日時:
こんにちは。
これは、学校の課題ですかね?
だとしたら相当難しいと思います。
何と言うか、出題者の執念のようなものを感じます。
処理の内容は、とても興味深いです。
修正箇所は山のようにありますが、簡単に言いますと次のような感じでしょうか。
◆ビルド時の不都合
・includeが不十分
・ところどころに全角文字が入っている。
・セミコロン間違い。
・カッコの対応が取れていない箇所がある。
・変数の宣言が足りない。
◆実行時の不都合
・入力に関する重要な処理が抜けている。
・出力に関して、不要な処理が入っている。
・後始末処理が不十分
No.1
- 回答日時:
提示されたコードだけからでは、
>解答例又は修正箇所
は、わからないです。
何をするためのプログラムなのですか?
何が問題なのですか?
現在のどういう動きを、どういう風に修正したいのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- JavaScript jQueryでのレスポンシブが綺麗に動かない 3 2022/06/21 11:08
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- その他(プログラミング・Web制作) Pythonでのかんたんな物理シミュレーションについての書籍 5 2023/06/02 07:37
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語で、繰り返し文の中で、0....
-
プログラムでの数字につく”f”の...
-
C言語のプログラムで#include<m...
-
C言語で直角三角形の斜辺を求め...
-
sin(x)の近似について
-
doubleの変数にintとintの割り...
-
Cで3乗根を求める方法
-
C言語初心者 構造体 課題について
-
至急です! マクロ定義で #defi...
-
float型とdouble型の変数の違い...
-
C言語を実行すると-infが出てき...
-
2分法で方程式の複数の解を自...
-
MATLABで画像のヒストグラムを...
-
浮動小数点数が表示されないん...
-
関数におけるif文とreturn文に...
-
2次方程式の解を求めるプログ...
-
double型とint型で三分の一乗の...
-
floating point not loadedとは?
-
C言語 関数プロトタイプ宣言の...
-
C言語で表記についの質問です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
doubleの変数にintとintの割り...
-
C 開放してるのにエラー(doubl...
-
Cで3乗根を求める方法
-
float型とdouble型の変数の違い...
-
至急です! マクロ定義で #defi...
-
C言語の型による処理速度の違い
-
int とdoubleの比較
-
関数におけるif文とreturn文に...
-
C言語初心者 構造体 課題について
-
c言語のコンパイルエラー canno...
-
C言語 関数プロトタイプ宣言の...
-
C言語を実行すると-infが出てき...
-
float?数字の後にLがつくもの
-
数値を指数部と仮数部に分離したい
-
difftime()について
-
浮動小数点数が表示されないん...
-
たくさんの数の平均を求める方...
-
DWORDの警告
-
-1.#IND00と出てしまうのですが...
おすすめ情報