私は問題を抱えており、定義された構造を返します。私の関数 scan_sci は、入力ソースから科学表記法で正の数を表す文字列を取得し、それをコンポーネントに分割して scinot_t 構造に格納することを想定しています。入力例は 0.25000e4 です。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct{
double mantissa;
int exp;
}sci_not_t;
int scan_sci (sci_not_t *c);
int main(void){
sci_not_t inp1, inp2;
printf("Enter the mantissa in the range [0.1, 1.0) then its exponent: ");
scan_sci(&inp1);
printf("Enter second number with same specifications as above: ");
scan_sci(&inp2);
system("PAUSE");
return 0;
}
int scan_sci (sci_not_t *c){
int status;
double a;
int b;
status = scanf("%lf %d", &c->mantissa, &c->exp);
a = c->mantissa;
b = c->exp;
*c = pow(a,b);
if (status == 2 && (c->mantissa >= 0.1 && c->mantissa < 1.0) ){
status = 1;
}else{
printf("You did not enter the mantissa in the correct range \n");
status = 0;
}
return (status);
}
sci_not_t sum(sci_not_t c1, sci_not_t c2){
return c1 + c2;
}
sci_not_t product(sci_not_t c1, sci_not_t c2){
return c1 * c2;
}