Как мне решить эту проблему с загадочным номером? - PullRequest
0 голосов
/ 02 марта 2020

Моя проблема в том, что я делаю некоторую практику, пока я болен, и я не посещаю школу, и я столкнулся с проблемой, которую решал всю прошлую ночь, но выглядит так просто, но это сложно Итак, вот проблема: / * Напишите программу, в которой пользователь будет загружать целое число из трех чисел git и суммирует все цифры числа и вычисляет загадочное число с помощью следующего уравнения:

mn = round((a^3+ b^2+c^ )/(a+2*b+3*c)), где a - первый ди git, b - второй ди git, c - третий ди git

В первой строке консоли должна быть сумма цифр, а во второй должен быть загадочный номер. * /

И вот где у меня возникла проблема, независимо от того, сколько раз я пытаюсь это просто печатает этот загадочный номер 0, но сумма в порядке, хотя я мог бы написать код немного лучше, вот код:

    #include <math.h>
    #include <stdio.h>

    int main(){
       int n;
       int a, b, c, sum;
       double mn;

       printf("n = ");
       scanf("%d", &n);

       a = (n / 100);
       b = (n / 10) - a * 10;
       c = n - a * 100 - b * 10;

       sum = a + b + c;

       mn = round((a^3 + b^2 + c) / (a + 2 * b + 3 * c));

       printf("\nmn = %f", mn);
       printf("\nsum is = %d", sum);

       return 0;

Для этого кода я использовал stdio.h и math.h. Помоги мне. Пожалуйста.

Ответы [ 3 ]

3 голосов
/ 02 марта 2020

In mn = round((a^3 + b^2 + c) / (a + 2 * b + 3 * c));:

  • ^ - не возведение в степень; a^3 не вычисляет куб a.
  • (a^3 + b^2 + c) и (a + 2 * b + 3 * c) являются целочисленными выражениями, поэтому / выполняет целочисленное деление, которое усекает.

Чтобы вычислить простые степени целочисленных значений, просто умножьте их по мере необходимости, например a*a*a и b*b.

Чтобы выполнить деление с плавающей запятой вместо целочисленного деления, преобразуйте любой из операндов в double , как с (double) (a*a*a + b*b + c).

2 голосов
/ 02 марта 2020

Вы присваиваете результат уравнения для tb и печатаете mn , который никогда не инициализировался и, вероятно, имеет значение 0 в качестве значения по умолчанию.

0 голосов
/ 02 марта 2020

Вы, похоже, ничего не храните в переменной mn, вместо этого я вижу, что вы используете переменную с именем tb для вычисления вашего загадочного числа. Я также подтверждаю тот факт, что оператор ^ не имеет возведения в степень, он является побитовым xor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...