下ののルート2のプログラムに時間計測ができるようにしたいのですが
#include <stdio.h>
/*******************************************************/
/* This program computes root(2)=1.41421356..... */
/*******************************************************/
/* This program creates automatically the following */
/* files: A.txt = m digits of root(2) (backward) */
/* D.txt = ( 2 - A*A ) (backward) */
/* B.txt = scratch file */
/* C.txt = scratch file */
/* E.txt = scratch file */
/* F.txt = scratch file */
/* G.txt = scratch file */
/* R.txt = m digits of root(2) <--ANSWER */
/*******************************************************/
/******* *******/
/******* created by Yoshiaki Hagiwara *******/
/******* *******/
/******* August 5, 2010 *******/
/******* *******/
/*******************************************************/
int m=0;
int x;
/* Function 01 A=1 */
int AONE(void){
char j;FILE *fpA;fpA=fopen("A.txt","w");
j='1';fputc(j,fpA);fclose(fpA);return 0;}
/* Function 02 D=1 */
int DONE(void){
char j;FILE *fpD;fpD=fopen("D.txt","w");
j='1';fputc(j,fpD);fclose(fpD);return 0;}
/* Function 03 E=0 */
int EZERO(void){
char j;FILE *fpE;fpE=fopen("E.txt","w");
j='0';fputc(j,fpE);fclose(fpE);return 0;}
/* Function 04 C=10*A */
int A10C(void){
char j;FILE *fpA;FILE *fpC;
fpA=fopen("A.txt","r");fpC=fopen("C.txt","w");
j='0';fputc(j,fpC);
ONCEMORE: j=fgetc(fpA);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpA);fclose(fpC);return 0;
NEXTSTEP: fputc(j,fpC);goto ONCEMORE;}
/* Function 05 C=100*D */
int D100C(void){
char j;FILE *fpD;FILE *fpC;
fpD=fopen("D.txt","r");fpC=fopen("C.txt","w");
j='0';fputc(j,fpC);fputc(j,fpC);
ONCEMORE: j=fgetc(fpD);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpD);fclose(fpC);return 0;
NEXTSTEP: fputc(j,fpC);goto ONCEMORE;}
/* Function 06 A=C */
int CTOA(void){
char j;FILE *fpC;FILE *fpA;
fpC=fopen("C.txt","r");fpA=fopen("A.txt","w");
ONCEMORE: j=fgetc(fpC);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpC);fclose(fpA);return 0;
NEXTSTEP: fputc(j,fpA);goto ONCEMORE;}
/* Function 07 D=C */
int CTOD(void){
char j;FILE *fpC;FILE *fpD;
fpC=fopen("C.txt","r");fpD=fopen("D.txt","w");
ONCEMORE: j=fgetc(fpC);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpC);fclose(fpD);return 0;
NEXTSTEP: fputc(j,fpD);goto ONCEMORE;}
/* Function 08 E=C */
int CTOE(void){
char j;FILE *fpC;FILE *fpE;
fpC=fopen("C.txt","r");fpE=fopen("E.txt","w");
ONCEMORE: j=fgetc(fpC);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpC);fclose(fpE);return 0;
NEXTSTEP: fputc(j,fpE);goto ONCEMORE;}
/* Function 09 F=C */
int CTOF(void){
char j;FILE *fpC;FILE *fpF;
fpC=fopen("C.txt","r");fpF=fopen("F.txt","w");
ONCEMORE: j=fgetc(fpC);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpC);fclose(fpF);return 0;
NEXTSTEP: fputc(j,fpF);goto ONCEMORE;}
/* Function 10 E=D */
int DTOE(void){
char j;FILE *fpD;FILE *fpE;
fpD=fopen("D.txt","r");fpE=fopen("E.txt","w");
ONCEMORE: j=fgetc(fpD);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpD);fclose(fpE);return 0;
NEXTSTEP: fputc(j,fpE);goto ONCEMORE;}
/* Function 11 D=F */
int FTOD(void){
char j;FILE *fpF;FILE *fpD;
fpF=fopen("F.txt","r");fpD=fopen("D.txt","w");
ONCEMORE: j=fgetc(fpF);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpF);fclose(fpD);return 0;
NEXTSTEP: fputc(j,fpD);goto ONCEMORE;}
/* Function 12 E=G */
int GTOE(void){
char j;FILE *fpG;FILE *fpE;
fpG=fopen("G.txt","r");fpE=fopen("E.txt","w");
ONCEMORE: j=fgetc(fpG);
if ( j == '1' ) goto NEXTSTEP;if ( j == '2' ) goto NEXTSTEP;
if ( j == '3' ) goto NEXTSTEP;if ( j == '4' ) goto NEXTSTEP;
if ( j == '5' ) goto NEXTSTEP;if ( j == '6' ) goto NEXTSTEP;
if ( j == '7' ) goto NEXTSTEP;if ( j == '8' ) goto NEXTSTEP;
if ( j == '9' ) goto NEXTSTEP;if ( j == '0' ) goto NEXTSTEP;
fclose(fpG);fclose(fpE);return 0;
NEXTSTEP: fputc(j,fpE);goto ONCEMORE;}
/* Function 13 C= B+x */
int BPXC(void){
char j; int carry,jj,xx; FILE *fpB;FILE *fpC;
fpB=fopen("B.txt","r");fpC=fopen("C.txt","w");
carry=0;xx=x;
ONCEMORE: j=fgetc(fpB); jj=-1;
if ( j == '1' ) jj=1;if ( j == '2' ) jj=2;if ( j == '3' ) jj=3;
if ( j == '4' ) jj=4;if ( j == '5' ) jj=5;if ( j == '6' ) jj=6;
if ( j == '7' ) jj=7;if ( j == '8' ) jj=8;if ( j == '9' ) jj=9;
if ( j == '0' ) jj=0;
if ( jj < 0 ) goto STEP01;
jj=jj+carry+xx;xx=0;carry=0;if ( jj > 9 ) { carry =1 ; jj=jj-10; }
if ( jj==0 ) j='0'; if ( jj==1 ) j='1'; if ( jj==2 ) j='2';
if ( jj==3 ) j='3'; if ( jj==4 ) j='4'; if ( jj==5 ) j='5';
if ( jj==6 ) j='6'; if ( jj==7 ) j='7'; if ( jj==8 ) j='8';
if ( jj==9 ) j='9'; fputc(j,fpC);goto ONCEMORE;
STEP01: if ( carry == 0 ) goto STEP03;j='1'; fputc(j,fpC);
STEP03: fclose(fpB);fclose(fpC);return 0;}
/* Function 14 A= C+x */
int CPXA(void){
char j; int carry,jj,xx; FILE *fpC;FILE *fpA;
fpC=fopen("C.txt","r");fpA=fopen("A.txt","w");
carry=0;xx=x;
ONCEMORE: j=fgetc(fpC); jj=-1;
if ( j == '1' ) jj=1;if ( j == '2' ) jj=2;if ( j == '3' ) jj=3;
if ( j == '4' ) jj=4;if ( j == '5' ) jj=5;if ( j == '6' ) jj=6;
if ( j == '7' ) jj=7;if ( j == '8' ) jj=8;if ( j == '9' ) jj=9;
if ( j == '0' ) jj=0;
if ( jj < 0 ) goto STEP01;
jj=jj+carry+xx;xx=0;carry=0;if ( jj > 9 ) { carry =1 ; jj=jj-10; }
if ( jj==0 ) j='0'; if ( jj==1 ) j='1'; if ( jj==2 ) j='2';
if ( jj==3 ) j='3'; if ( jj==4 ) j='4'; if ( jj==5 ) j='5';
if ( jj==6 ) j='6'; if ( jj==7 ) j='7'; if ( jj==8 ) j='8';
if ( jj==9 ) j='9'; fputc(j,fpA);goto ONCEMORE;
STEP01: if ( carry == 0 ) goto STEP03;j='1'; fputc(j,fpA);
STEP03: fclose(fpC);fclose(fpA);return 0;}
/* Function 15 B=C+E */
int CPEB(void){
char j,k; int carry,jj,kk;FILE *fpC;FILE *fpE;FILE *fpB;
fpC=fopen("C.txt","r");fpE=fopen("E.txt","r");
fpB=fopen("B.txt","w");carry=0;
ONCEMORE: j=fgetc(fpC); k=fgetc(fpE);kk=-1;jj=-1;
if ( j == '1' ) jj=1;if ( j == '2' ) jj=2;if ( j == '3' ) jj=3;
if ( j == '4' ) jj=4;if ( j == '5' ) jj=5;if ( j == '6' ) jj=6;
if ( j == '7' ) jj=7;if ( j == '8' ) jj=8;if ( j == '9' ) jj=9;
if ( j == '0' ) jj=0;
if ( k == '1' ) kk=1;if ( k == '2' ) kk=2;if ( k == '3' ) kk=3;
if ( k == '4' ) kk=4;if ( k == '5' ) kk=5;if ( k == '6' ) kk=6;
if ( k == '7' ) kk=7;if ( k == '8' ) kk=8;if ( k == '9' ) kk=9;
if ( k == '0' ) kk=0;
if ( kk < 0 ) goto STEP03;if ( jj < 0 ) goto STEP01;
STEP02:kk=kk+jj+carry;carry=0; if ( kk > 9 ) { carry =1 ; kk=kk-10; }
if ( kk==0 ) k='0'; if ( kk==1 ) k='1'; if ( kk==2 ) k='2';
if ( kk==3 ) k='3'; if ( kk==4 ) k='4'; if ( kk==5 ) k='5';
if ( kk==6 ) k='6'; if ( kk==7 ) k='7'; if ( kk==8 ) k='8';
if ( kk==9 ) k='9';
fputc(k,fpB);goto ONCEMORE;
STEP01: jj=0; goto STEP02;
STEP03:if ( jj < 0 ) goto STEP04;kk=0; goto STEP02;
STEP04:if ( carry == 0 ) goto STEP05;k='1';fputc(k,fpB);
STEP05:fclose(fpC);fclose(fpE);fclose(fpB);return 0;}
/* Function 16 G=E+C */
int EPCG(void){
char j,k; int carry,jj,kk;FILE *fpE;FILE *fpC;FILE *fpG;
fpE=fopen("E.txt","r");fpC=fopen("C.txt","r");
fpG=fopen("G.txt","w");carry=0;
ONCEMORE: j=fgetc(fpE); k=fgetc(fpC);kk=-1;jj=-1;
if ( j == '1' ) jj=1;if ( j == '2' ) jj=2;if ( j == '3' ) jj=3;
if ( j == '4' ) jj=4;if ( j == '5' ) jj=5;if ( j == '6' ) jj=6;
if ( j == '7' ) jj=7;if ( j == '8' ) jj=8;if ( j == '9' ) jj=9;
if ( j == '0' ) jj=0;
if ( k == '1' ) kk=1;if ( k == '2' ) kk=2;if ( k == '3' ) kk=3;
if ( k == '4' ) kk=4;if ( k == '5' ) kk=5;if ( k == '6' ) kk=6;
if ( k == '7' ) kk=7;if ( k == '8' ) kk=8;if ( k == '9' ) kk=9;
if ( k == '0' ) kk=0;
if ( kk < 0 ) goto STEP03;if ( jj < 0 ) goto STEP01;
STEP02:kk=kk+jj+carry;carry=0; if ( kk > 9 ) { carry =1 ; kk=kk-10; }
if ( kk==0 ) k='0'; if ( kk==1 ) k='1'; if ( kk==2 ) k='2';
if ( kk==3 ) k='3'; if ( kk==4 ) k='4'; if ( kk==5 ) k='5';
if ( kk==6 ) k='6'; if ( kk==7 ) k='7'; if ( kk==8 ) k='8';
if ( kk==9 ) k='9';
fputc(k,fpG);goto ONCEMORE;
STEP01: jj=0; goto STEP02;
STEP03:if ( jj < 0 ) goto STEP04;kk=0; goto STEP02;
STEP04:if ( carry == 0 ) goto STEP05;k='1';fputc(k,fpG);
STEP05:fclose(fpE);fclose(fpC);fclose(fpG);return 0;}
/* Function 17 E= x*C */
int CXE(void){
int ix;
if( x > 0 ) goto STEP1;EZERO(); return 0;
STEP1: CTOE();if( x == 1 ) return 0;ix=2;
MOREX:EPCG(); GTOE(); if (ix == x ) return 0;
ix=ix+1; goto MOREX;}
/* Function 18 C=D-E and t=1 if C>0 */
int DSEC(void){
char j,k;int carry,jj,kk;int t=1;
FILE *fpD;FILE *fpE;FILE *fpC;
fpD=fopen("D.txt","r");fpE=fopen("E.txt","r");
fpC=fopen("C.txt","w"); carry=0;
ONCEMORE: j=fgetc(fpD); k=fgetc(fpE);kk=-1;jj=-1;
if ( j == '1' ) jj=1;if ( j == '2' ) jj=2;if ( j == '3' ) jj=3;
if ( j == '4' ) jj=4;if ( j == '5' ) jj=5;if ( j == '6' ) jj=6;
if ( j == '7' ) jj=7;if ( j == '8' ) jj=8;if ( j == '9' ) jj=9;
if ( j == '0' ) jj=0;
if ( k == '1' ) kk=1;if ( k == '2' ) kk=2;if ( k == '3' ) kk=3;
if ( k == '4' ) kk=4;if ( k == '5' ) kk=5;if ( k == '6' ) kk=6;
if ( k == '7' ) kk=7;if ( k == '8' ) kk=8;if ( k == '9' ) kk=9;
if ( k == '0' ) kk=0;
if ( kk < 0 ) goto STEP03;if ( jj < 0 ) goto STEP01;
STEP02:kk=jj-kk-carry;carry=0;if ( kk < 0 ) { carry =1 ; kk=10+kk; }
if ( kk==0 ) k='0';if ( kk==1 ) k='1';if ( kk==2 ) k='2';
if ( kk==3 ) k='3';if ( kk==4 ) k='4';if ( kk==5 ) k='5';
if ( kk==6 ) k='6';if ( kk==7 ) k='7';if ( kk==8 ) k='8';
if ( kk==9 ) k='9';
fputc(k,fpC);goto ONCEMORE;
STEP01: jj=0; goto STEP02;
STEP03:if ( jj < 0 ) goto STEP04;kk=0; goto STEP02;
STEP04:if ( carry == 0 ) goto STEP05;t=-1;k='/';fputc(k,fpC);
STEP05:fclose(fpD);fclose(fpE);fclose(fpC);return t;}
/* Function 19 < Get Next x > */
int GETNEXTX(void){char s;
int ix,t;x=0;
D100C();CTOD(); /* C=100*D; D=C; --> C=100*C */
A10C();CTOE(); CPEB(); /* C=10*A;E=C;B=C+E; --> B=20*A */
NEXTTRY:
BPXC(); /* C=B+x --> C= 20*A+x */
CXE(); /* E=x*C --> E= x*(20*A+x) */
t=DSEC(); /* C=D-E and t=1 if C>0 */
if (t < 0 ) goto XEND;
CTOF();x=x+1;goto NEXTTRY; /* F=C --> F= D - E */
XEND: x=x-1; /* Finally obtained next x */
FTOD(); A10C(); CPXA(); /* D=F;C=10*A;A=C+x; --> A=10*A+x */
return 0;}
/* Function 20 */
int main(void){char j;
int istop ;int NJ;
int m10;
FILE *fpR;fpR=fopen("R.txt","w");j='1';fputc(j,fpR);j='.';fputc(j,fpR);
AONE();DONE(); /* A=1;D=1; */
ONCEMOREJ:j=getchar();NJ = 1;
if ( j == '1' ) NJ =9;if ( j == '2' ) NJ =99;if ( j == '3' ) NJ =999;
if ( j == '4' ) NJ = 9999;if ( j == '5' ) NJ = 99999;
if ( j == 's' ) { fclose(fpR);return 0;} istop=m+NJ;
ONCEMORE:if ( m == istop ) goto ONCEMOREJ;
m=m+1;GETNEXTX();
if ( x ==0 ) j='0';if ( x ==1 ) j='1';if ( x==2 ) j='2';
if ( x ==3 ) j='3';if ( x ==4 ) j='4';if ( x==5 ) j='5';
if ( x ==6 ) j='6';if ( x ==7 ) j='7';if ( x==8 ) j='8';
if ( x ==9 ) j='9';fputc(j,fpR);
m10=m-(m/10)*10; if( m10==0 ) fputc(' ',fpR) ;
m10=m-(m/1000)*1000; if( m10==0 ) fputc('\n',fpR) ;
m10=m-(m/100)*100; if( m10==0 ) {fputc('\n',fpR) ;
fputc(' ',fpR) ;fputc(' ',fpR) ;}
if ( m>9 ) goto II; printf("00000%d %d \n",m,x);
goto ONCEMORE;
II:
if ( m>99 ) goto III; printf("0000%d %d \n",m,x);
goto ONCEMORE;
III: if ( m>999 ) goto IIII; printf("000%d %d \n",m,x);
goto ONCEMORE;
IIII:
if ( m>9999 ) goto IIIII; printf("00%d %d \n",m,x);
goto ONCEMORE;
IIIII:
if ( m>99999) goto IIIIII;printf("0%d %d \n",m,x); goto ONCEMORE;
IIIIII:
if ( m>999999) return 0; printf("%d %d \n",m,x); goto ONCEMORE;
}
時間計測のプログラムを作りたいのですが…
Re: 時間計測のプログラムを作りたいのですが…
time.hを使うとして、
http://www.mm2d.net/c/c-02.shtml
あたりを参考にしたらいかがでしょうか?
Windowsの環境でしたら、timeGetTime等の関数を使うという方法もあります。
http://www.mm2d.net/c/c-02.shtml
あたりを参考にしたらいかがでしょうか?
Windowsの環境でしたら、timeGetTime等の関数を使うという方法もあります。
Re: 時間計測のプログラムを作りたいのですが…
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 時間計測のプログラムを作りたいのですが…
と言われたので、「ファイル」にしてみました。たけ さんが書きました:そのファイルを作ってほしいのですが…
- 添付ファイル
-
- ruuto2.c
- ソースファイルです。
- (14.19 KiB) ダウンロード数: 119 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 時間計測のプログラムを作りたいのですが…
つっこみどころ満載のプログラムだけど、検索すると作者は
「created by ちゃんとした情報学科の教授」らしい
http://www.cis.sojo-u.ac.jp/~hagiwara/indexNUM.html
数学科なら解ければいいや的なソースもありかなと思いましたが
情報学科の先生がこんなソース書いていていいのかなと思う。
「created by ちゃんとした情報学科の教授」らしい
http://www.cis.sojo-u.ac.jp/~hagiwara/indexNUM.html
数学科なら解ければいいや的なソースもありかなと思いましたが
情報学科の先生がこんなソース書いていていいのかなと思う。
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: 時間計測のプログラムを作りたいのですが…
この人って確かニーソの主幹技師でしたよね。。。
ニーソの主幹技師になるには、こんなコードを書けなくちゃいけないのか・・・
にしても、goto使いすぎですし関数名がぶっ飛んでますね。「いつの時代のプログラムなんだっ!!」って感じですねwww
ニーソの主幹技師になるには、こんなコードを書けなくちゃいけないのか・・・
にしても、goto使いすぎですし関数名がぶっ飛んでますね。「いつの時代のプログラムなんだっ!!」って感じですねwww
Re: 時間計測のプログラムを作りたいのですが…
非構造化プログラミング的テーストを持ったCプログラムですね。
fopen fclose fputc fgetc goto return if printf と算術式のみで構成されています。(もれてたらごめん)
DSEC()だけRETURN値に意味があるので、ここを工夫すれば returnも無しで行けます。←これはウソ
ある意味すごいです。
最後の10数行は
printf("06%d %d \n",m,x); という超必殺技を使えば数行に出来る事はぜひ教えてあげて下さい。
別にprintf("%d %d \n",m,x); でもいいじゃんという説もありますが。
fopen fclose fputc fgetc goto return if printf と算術式のみで構成されています。(もれてたらごめん)
DSEC()だけRETURN値に意味があるので、ここを工夫すれば returnも無しで行けます。←これはウソ
ある意味すごいです。
最後の10数行は
printf("06%d %d \n",m,x); という超必殺技を使えば数行に出来る事はぜひ教えてあげて下さい。
別にprintf("%d %d \n",m,x); でもいいじゃんという説もありますが。