Проблемы возведения в квадрат # в 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];
  1. Я думаю, вам нужно позвонить [mySquare setPowering] для питания рассчитывается.

  2. [mySquare print] это ново для меня. Это пытается напечатать класс? Я думаю, что это странно. Я думаю, что вы должны напечатать mySquare.Powering проверить значение. Попробуйте что-то вроде

    NSLog("Powering: %d",mySquare.Powering);
    
  3. Не уверен, почему вы используете INT для вычислений с плавающей запятой. Это может повлиять на ваши результаты тоже, я думаю. Лучше всего использовать float для всех переменных.

Вот и все мои комментарии.

Другие вопросы по тегам