関数もないです。
よくデータ消しちゃったりするのでメモ感覚で日記にあげました・・・。
#include
#include
#include "kota_string.h"
void divide_formula( char *formula, double *figure, char *symbol);
double calculate( double *figure, char *symbol);
void batsu();
int kou_num = 0;
int main( )
{
setbuf(stdout,0);//msPEwb2Kの制限:main関数の最初の実行文の前に置く
char formula[100] = {"\0"}, symbol[100] = {"\0"};
double figure[100] = {0}, sum = 0;
printf("式:");
fgets( formula, sizeof(formula), stdin);
if( strchr( formula, '\n') != NULL ) {
// 改行文字を終端記号に置換
formula[ kota_strlen(formula) - 1] = '\0';
} else {
// 入力ストリームをクリア
while( getchar() != '\n' );
}
divide_formula( formula, figure, symbol ); //式を文字と記号に分ける
sum = calculate( figure, symbol ); //計算する
printf("Ans:%f\n", sum);
batsu();
return 0;
}
/********************* divide_formula( ) **********************/
//数字と記号を分ける
void divide_formula( char * formula, double *figure, char *symbol)
{
char fig[20];
int i=0, j=0,cnt = 0;
for(kou_num = 0; *formula != '\0'; formula++){
if( !(*formula >= '0' && *formula = '0' && *formula = '0' && *formula <= '9' || (*formula == '.') ){
fig[j] = *formula;
j ++;
formula ++;
}
sscanf(fig, "%lf", figure);
figure -= kou_num;
symbol -= kou_num;
}
double calculate(double *figure, char *symbol)
{
double sum = 0;
int i;
sum = *figure;
for(i = 0; i < kou_num; i++){
figure ++;
switch( *symbol )
{
case '+':
sum += (double)*figure;
break;
case '-':
sum -= (double)*figure;
break;
case '*':
sum *= (double)*figure;
break;
case '/':
sum /= (double)*figure;
break;
default :
puts("入力エラー");
exit(1);
}
symbol ++;
}
return sum;
}
void batsu()
{
int size = 0, i, j;
printf("\n(おまけ)×の大きさ:"); scanf("%d",&size);
for(i = 0; i < size; i++){
for(j = 0; j < size; j ++)
printf("%s", (i == j || (i + j) == (size - 1 ))?" ":"*");
putchar('\n');
}
}