>>951 今の規格ではNULLは整数の0と等価にみなせるんじゃなかったか?
C99だったかC++のどこからかだったかは覚えてないんだが…
>>944 その問題、何度か尋ねてるようだけど、とりあえず出力例を出してくれ。
あと指数部の基数は幾つだ?下駄は?
仮数部の正規化の形式は?
>>944 入力フォーマット {-},[0-9]+{.[0-9]+}|{-}.[0-9]+
のうち|の前の {-} につづく , カンマが入ってるのは間違いだよな?
955 :
954:2006/10/19(木) 00:50:20
>>944 受け取れる数値のフォーマットは
1.125
-1.125
.125
-.125
だと思いたいわけだが、問題の通りだとカンマがあるせいで
,1.125
-,1.125
.125
-.125
こんなものを処理しないといけなくなってしまうぞ
956 :
デフォルトの名無しさん:2006/10/19(木) 01:29:03
957 :
デフォルトの名無しさん:2006/10/19(木) 01:31:04
>>955 >>956で訂正されてしまったので身もふたもないが…
おそらく適正を見ているのだろう。
勝手に解釈して , を抜かす奴→不可
間違いではないかと質問に来る奴→不可
書いてあるとおりに実装する奴→可
どちらの場合にも対応できるように実装する奴→良
このスレに丸投げしてねらーが答えないのが悪いと責任転嫁する奴→優
>>950 最近はNULLは#defineで0設定されてたと思う。
>>956 もしカンマをピリオドに変えると更にわけわかめ
1.1.25
-1.1.25
これは一体どんな数値に変換すれば…
960 :
デフォルトの名無しさん:2006/10/19(木) 01:47:30
>>959 チョット違う
.1.25
-.1.25
だろ?あげあし取りスマソ
>>944 の解き方としては
1.整数部分だけを二進数に変換
2.少数点以下を二進数に変換
3.1.2.の結果を合わせて初めてビットが1になる次のビットを仮数部の最上位ビットにする
で一応できるけど、無限大の表現と 0 の表現が未定義だな
962 :
デフォルトの名無しさん:2006/10/19(木) 08:29:59
区切り文字をわざわざ小数点とかぶせる神経が分からない
1.1.25
-1.1
.25 (0.25)
と解釈できるけど?
あるぇ~~、まだぽまいらC言語なんてやってんのぉ~~~~~?
>>961 世にあるIEEE以外の多くの実装では、最上位ビットも記録するわけだが。
素直にatofのソースまるパクリでよくね。
いっそのこと、atofで変換して基数部を指定ビット数で切り捨てるとか。
.-.1.25なんて馬鹿だろ
仮数部はどうするのかな。(1+x)?それともx?
まぁまて文字での表現形式とビットでの表現形式が一致しなければならないなんてどこにも書いてないぞ
971 :
デフォルトの名無しさん:2006/10/19(木) 12:21:13
もうこのネタは飽きた。
なら出てくんな
質問者の態度が悪いなー
974 :
デフォルトの名無しさん:2006/10/19(木) 15:13:40
>>952>>958 C++では0だし、Cでも0になっていることはある。
でも、だからと言って文字列の終端にNULLを使ってよいという理由にはならない。
976 :
デフォルトの名無しさん:2006/10/19(木) 16:05:44
>>944 うっとうしいからさっさとやっちゃおうぜ
やれと言われても、
>>944は解くための情報が決定的に不足しとるんだわな。
とりあえず、基数は2。バイアスは無し。正規化は小数第1位に有効ビットを
持ってくる。入力フォーマットのカンマは無視ってことでいいのか?
978 :
デフォルトの名無しさん:2006/10/19(木) 16:41:29
どうせ他人の宿題なんだし、適当に解釈してそれっぽく見繕えばいいんじゃね?
980 :
941:2006/10/19(木) 17:09:26
ググったのですが解説されている所はありませんでした。
マジで誰か分かる方いませんか?
981 :
デフォルトの名無しさん :2006/10/19(木) 17:22:30
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h>
#define Bs 10 //底を10とする
typedef struct{
unsigned int flug: 1;//フラグ
unsigned int index: 8;//指数
unsigned int mantissa: 32;//仮数
}BitSet;
BitSet *ChngF(char *Num, unsigned int size);double ToDubF(BitSet *Bz);
BitSet *ChngF(char *Num, unsigned int size){unsigned int i = 0,j = 0;unsigned int Bn = 0;
BitSet *Bi = (BitSet *)malloc(sizeof(BitSet));Bi->flug = 0;Bi->index = 0;Bi->mantissa = 0;
if(Bi == NULL){fprintf(stderr,"メモリ割り当て失敗\n");exit(1);}for(i = 0; isspace(Num[i]); i++)
;if(Num[i] == '-'){Bi->flug = 1;}else if(Num[i] == '+'){Bi->flug = 0;}else{Bi->flug = 0;}i++;
for(Bn = 0, j = 0;isdigit(Num[i]);i++, j++)Bn = 10 * Bn + (Num[i] - '0');Bi->index = j;
if(Num[i] == '.')i++;elseexit(1);for(;i < size; i++)Bn = 10 * Bn + (Num[i] - '0');Bi->mantissa = Bn;
return Bi;}double ToDubF(BitSet *Bz){double dm = (double)Bz->mantissa ,rd;unsigned int i;
double Ind = Bs ;for(i = 0; i < Bz->index; i++)Ind *= Bs;rd = (double)Bz->mantissa / Ind;if(Bz->flug == 1)
rd *= -1;return rd;}int main()
{char Num[] = "-13.653";unsigned int size = (unsigned int)strlen(Num);BitSet *B1;double Resl;
B1 = ChngF(Num, size);Resl = ToDubF(B1);printf("%s : %f \n",Num, Resl);return 0;}
>>944の問題って
入力規則ってのがわかんないんっすけど
こんな感じっすかね。問題の意図が違いますかね?
982 :
デフォルトの名無しさん:2006/10/19(木) 17:42:20
983 :
デフォルトの名無しさん:2006/10/19(木) 17:46:38
985 :
デフォルトの名無しさん:2006/10/19(木) 18:18:54
>>985 1scanf("%lf %lf %lf", &w, &h, &d);
2:v=w*h*d;
3:s=w*h*2+h*d*2+d*w*2;
4:w, h, d
5:printf("taiseki %f, menseki %f\n", v, s);
987 :
985:2006/10/19(木) 18:46:01
988 :
デフォルトの名無しさん:2006/10/19(木) 19:06:51
[1] 授業単元:システム学
[2] 問題文:行列の積を用いた性能評価プログラムを作成しなさい
計算に何秒かかったのか表示し、行列の大きさは任意で変更が出来るように組むこと
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 2006年10月20日14時
[5] その他の制限: コンパイルオプションには最適化を指示する。
倍精度浮動小数点を用いること
よろしくお願いします
992 :
デフォルトの名無しさん:2006/10/19(木) 20:39:36
スレでも立てるか
>>990 問題文に問題があるんだが、変更していいのはあくまでも
struct nibun *add_nibun(struct nibun *x,int k)
って関数だけなの?
>>995 そうです
問題に書いてある部分は変更しちゃいけないみたいです
埋め
dispがこうなっていれば俺にも解けるんだが。
void disp(struct nibun *x)
{
if(x->small!=NULL)
disp(x->small);
printf("%d-(",x->num);
if(x->small!=NULL)
printf("%d,",(x->small)->num);
else
printf("*");
if(x->big!=NULL)
printf("%d)\n",(x->big)->num);
else
printf("*)\n");
if(x->big!=NULL)
disp(x->big);
}
つーか2分木リスト構造って何だ?
999
>>990 struct nibun *add_nibun(struct nibun *x,int k)
{
struct nibun *member, *parent, **parent_next;
member=malloc(sizeof(struct nibun));
member->num=k;
member->small=NULL;
member->big=NULL;
parent=x;
while(parent!=NULL)
{
if(k<parent->num)
parent_next=&(parent->small);
else
parent_next=&(parent->big);
if(*parent_next==NULL)
break;
parent=*parent_next;
}
*parent_next=member;
return x;
}
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。