#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の問題って
入力規則ってのがわかんないんっすけど
こんな感じっすかね。問題の意図が違いますかね?