こんにちは。分からないことがあったので質問させて下さい。
実数型と実数型の計算で、計算結果を整数型で表示することは可能でしょうか?
また、可能だとしたらどのようにすればよいでしょうか?
例えば-2147483647 + 1(オペランドは両方実数型)= -2147483646(整数型で表示)
にしたいです。よろしくお願いします。
無題
Re:無題
boxさん。出来ました。ありがとうございました。
int lop; // 左のオペランドに入力する値
int rop; // 右のオペランドに入力する
long mod; // 除算の余り
int max = INT_MAX; // 表現可能な最大値
int min = INT_MIN; // 表現可能な最小値
long long result; // 計算結果を格納
char *check; // 変換不可能な文字を格納
char op; // 入力する演算子
case '/' :
if ( rop == 0 ) {
printf ( "error : division error\n" );
exit ( -1 );
}
// 除算のオーバーフローを考慮
if ( ( lop == min ) && ( rop == -1 ) ) {
printf ( "error : over_flow!!\n" );
exit ( 0 );
}
result = (long long)lop % (long long)rop;
// 割り算の結果として余りが出なかった場合
if ( result == 0 ) {
result = (long long)lop / (long long)rop;
printf ( "%d %c %d = %d", lop, op, rop, result );
exit ( 0 );
// 割り算の結果として余りが出た場合
} else if ( result != 0 ) {
result = (long long)lop / (long long)rop;
mod = (long long)lop % (long long)rop;
printf ( "%d %c %d = %d余り%d", lop, op, rop, result, mod );
exit ( 0 );
}
以前も質問させていただいたのですが、除算で余りがないときは商だけを表示して
余りがあるときは商と余りを表示したいです(5 / 1= 5)(5 / 2= 2余り1)という
感じです。それが余りがある場合全て余りが0になってしまいます。
どうすればよいのでしょうか?long longの使い方が違うのでしょうか?
見にくいかと思いますが、よろしくお願いします。
int lop; // 左のオペランドに入力する値
int rop; // 右のオペランドに入力する
long mod; // 除算の余り
int max = INT_MAX; // 表現可能な最大値
int min = INT_MIN; // 表現可能な最小値
long long result; // 計算結果を格納
char *check; // 変換不可能な文字を格納
char op; // 入力する演算子
case '/' :
if ( rop == 0 ) {
printf ( "error : division error\n" );
exit ( -1 );
}
// 除算のオーバーフローを考慮
if ( ( lop == min ) && ( rop == -1 ) ) {
printf ( "error : over_flow!!\n" );
exit ( 0 );
}
result = (long long)lop % (long long)rop;
// 割り算の結果として余りが出なかった場合
if ( result == 0 ) {
result = (long long)lop / (long long)rop;
printf ( "%d %c %d = %d", lop, op, rop, result );
exit ( 0 );
// 割り算の結果として余りが出た場合
} else if ( result != 0 ) {
result = (long long)lop / (long long)rop;
mod = (long long)lop % (long long)rop;
printf ( "%d %c %d = %d余り%d", lop, op, rop, result, mod );
exit ( 0 );
}
以前も質問させていただいたのですが、除算で余りがないときは商だけを表示して
余りがあるときは商と余りを表示したいです(5 / 1= 5)(5 / 2= 2余り1)という
感じです。それが余りがある場合全て余りが0になってしまいます。
どうすればよいのでしょうか?long longの使い方が違うのでしょうか?
見にくいかと思いますが、よろしくお願いします。