Member 14075859 Ответов: 2

Я создаю программу для вычисления суммы и делителей введенного числа, но получаю некоторые ошибки


Итак , я строю вычислительную программу, программа должна задать пользователю число не более 7 цифр, а затем вычислить сумму чисел, например: число = 1259955, сумма= 36, как это, то программа должна перечислить все делители суммы выше примера:
sum=8 , divisors = 1,2,3,4,6,9,12,18,36
Подобный этому

Мой код, который я написал, выполняет часть суммы, но не часть делителя

Также при линейной консоли.Метода WriteLine("сумма цифр" + количество + "составляет"+ сумма) выполнение вывода : сумма цифр числа 0 на 36 зачем он говорил 0

Что я уже пробовал:

int number;
        int sum = 0;
        Console.WriteLine("Enter a number with at most 7 digits: ");
        number = Convert.ToInt32(Console.ReadLine());

        while (number != 0)
        {
            sum += number % 10;
            number /= 10;
        }

        Console.WriteLine("Sum of the digits of " + number + " is " + sum);



        for (int i = 1; i <= number; i++)
        {
            if (number % i ==0)
            {

                Console.WriteLine("The divisors of" + sum + " are " + i.ToString());
            }


        }

        Console.ReadLine();
    }
}

Richard MacCutchan

Ваш начальный цикл сокращается number обнулить. Пожалуйста, попробуйте прочитать ваш код до конца, если он не делает то, что вы ожидаете.

2 Ответов

Рейтинг:
2

Patrice T

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

Отладка кода C# в Visual Studio - YouTube[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Рейтинг:
16

RASHID ALI786

Привет,
Надеюсь, у вас все хорошо.

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

вот почему здесь написано:

Sum of the digits 0 is 36


и именно по этой причине цикл for не выполняется из-за числа=0.



Решение простое

возьмите другую переменную, сохраните в ней исходное значение, и все.

int number,val;
            int sum = 0;
            Console.WriteLine("Enter a number with at most 7 digits: ");
            number = Convert.ToInt32(Console.ReadLine());
            val = number;
            while (number != 0)
            {
                sum += number % 10;
                number /= 10;
            }

            Console.WriteLine("Sum of the digits of " + val + " is " + sum);



            for (int i = 1; i <= val; i++)
            {
                if (val % i == 0)
                {

                    Console.WriteLine("The divisors of " + sum + " are " + i.ToString());
                }


            }

            Console.ReadLine();


Member 14075859

да спасибо теперь это работает
но также мне нужно отобразить все делители на одной строке без повторного отображения :
Введите число, состоящее не более чем из 7 цифр:
1259955
Сумма цифр 1259955 равна 36
Делители числа 36 равны 1
Делители 36 равны 2
Делители 36 равны 3
Делители 36 равны 4
Делители 36 равны 6
Делители 36 равны 9
Делители 36 равны 12
Делители 36 равны 18
Делители of36 являются 36

я хочу, чтобы он отображал его следующим образом : делители 36: 1,2,3,4,6,9,12,18,36

Patrice T

если проблема решена, примите полезное решение.
он скажет всем, что помощь больше не нужна.