Проблемы возведения в квадрат # в C
Я пытаюсь скомпилировать программу на C, чтобы вернуть квадрат числа, например 1^2=1, но программа компилируется без проблем и всегда возвращает значение 0.
Что я сделал не так?
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[])
{
/* Define temporary variables */
double value1, value2;
double result;
/* Assign the values we will use for the pow calculation */
value1 = 0;
value2 = 0;
/* Calculate the result of value1 raised to the power of value2 */
result = pow(value1, value2);
/* Display the result of the calculation */
printf("%f raised to the power of %f is %f\n", value1, value2, result);
return 0;
}
3 ответа
Это простая ошибка. Вы забыли позвонить [mySquare setPowering];
функция. Кроме того, вы передавали какую-то странную неиспользуемую функцию в эту функцию, поэтому я вырезал ее.
Вот ваш фиксированный код. Хотя в следующий раз вы должны тщательно прочесать свой код, прежде чем спрашивать нас. В противном случае вы не научитесь важным навыкам отладки. Лучший способ для этого - просто буквально обходить строку за строкой и убедиться, что все используется правильно... вот как я нашел ошибку:)
#import <Foundation/Foundation.h>
#import <math.h>
@interface Square: NSObject
{
int Constant;
int Power;
int Powering;
}
-(void) print;
-(void) setConstant: (int) c;
-(void) setPower: (int) p;
-(void) setPowering; // <-- HERE
@end
@implementation Square
-(void) print
{
NSLog (@"%i", Powering);
}
-(void) setConstant: (int) c
{
Constant = c;
}
-(void) setPower: (int) p
{
Power = p;
}
-(void) setPowering // <-- HERE
{
NSLog (@"%i^%i", Constant, Power); // This is optional
Powering = pow(Constant,Power);
}
@end
int main (int argc, const char * argv[])
{
Square *mySquare;
mySquare = [Square alloc];
mySquare = [mySquare init];
[mySquare setConstant: 2];
[mySquare setPower: 3];
[mySquare setPowering]; // <-- HERE
NSLog (@"The value of myPower is:");
[mySquare print];
return 0;
}
Вы можете вычислить показатель степени или мощность с помощью функции pow:
#include <math.h>
double pow(double x, double y);
На основании вашего кода:
[mySquare setConstant: 2];
[mySquare setPower: 3];
NSLog (@"The value of myPower is:");
[mySquare print];
Я думаю, вам нужно позвонить
[mySquare setPowering]
для питания рассчитывается.[mySquare print]
это ново для меня. Это пытается напечатать класс? Я думаю, что это странно. Я думаю, что вы должны напечататьmySquare.Powering
проверить значение. Попробуйте что-то вродеNSLog("Powering: %d",mySquare.Powering);
Не уверен, почему вы используете INT для вычислений с плавающей запятой. Это может повлиять на ваши результаты тоже, я думаю. Лучше всего использовать float для всех переменных.
Вот и все мои комментарии.