我需要一些关于编程的帮助。 我必须编写一个程序,它可以在没有运算符的情况下进行除法和乘法,并包含IEEE 754标准。 我只能使用+,-,否定和逻辑运算。 数字和运算符需要从文件中读取。
目前我已经有了一些进展,但它没有正确工作。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
float mult(float a, float b) {
float i = 0;
float c = 0;
while (i < b) {
c = c + a;
i++;
}
return c;
}
//this will be needed to divide
float product=1,multiplier=2,a=1;
int steps=0;
void divCore(float number, float divideBy,float lastDivison)
{
steps++;
if(number - divideBy <
return;
else
{
lastDivison = divideBy;
divideBy *= multiplier;
if(number >= divideBy)
{
product *= multiplier;
divCore(number,divideBy,lastDivison);
}
else
{
a *= 0.5;
multiplier = 1 + a;
divCore(number,lastDivison,lastDivison);
}
}
}
//its an other function for division ,you use this in main
float Divide(float numerator, float denominator)
{
//init data
int neg=(numerator<0)?-1:1;
neg*=(denominator<0)?-1:1;
product = 1;
multiplier = 2;
a = 1;
steps =0;
divCore(abs(numerator),abs(denominator),0);
return product*neg;
}
int main()
{
float i,j;
char c[2];
FILE *in=fopen("input.txt","r");
fscanf(in,"%f",&i);
fscanf(in,"%s",c);
fscanf(in,"%f",&j);
if(strcmp(c,"*")==0){
float a = mult(i,j);
printf("%f\n", a);
}
if(strcmp(c,"/")==0){
float a2 = Divide(i,j);
printf("%f\n", a2);
}
getchar();
getchar();
}
文件看起来像这样(我认为数字并不重要):
0x0000C942
*
0x0000C942
mult()
函数。while()
循环不够用。float
类型的值不一定总是整数,而你的循环却依赖于整数值。 - chux - Reinstate Monica*
运算符。那么log
/pow
的调用呢? - Klas Lindbäck