Как манипулировать десятичными числами в целых числах? CS50 Алгоритм Луна - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу добавить все цифры массива и получить из них сумму. То, с чем я борюсь, это то, что мне нужно умножить числа, которые я получаю из своего ввода, на что массив может иметь две цифры в одном массиве. Номер примера будет 8346761. Задача требует, чтобы я взял все остальные ди git (6,6,3), затем умножил их (12,12,6) и сложил первые цифры вместе, как (1 + 2 + 1). + 2 + 6) = 12. Я только знаю, как сделать 12 + 12 + 6 = 30 и искал помощи по этой части c. Я новичок в программировании, а также переполнение стека, поэтому, если что-то не так, я задал вопрос, пожалуйста, скажите мне, чтобы я мог это исправить. Спасибо

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    long long cardNum = get_long_long("What is your credit card number?\n");


    printf("Number: %lld\n", cardNum);
    long long cardNumz = cardNum; 


    long long Multnumbers[20];
    cardNum /= 10;
    for (long long i=0; i < 20; i++) 
    {

        Multnumbers[i] = cardNum % 10;
        Multnumbers[i] *= 2;
        cardNum /= 100;

    }
    int sum = 0;

    int loop;
    for(loop = 0; loop < 20; loop++)
    {

      printf("%lld ", Multnumbers[loop]);

    }
     printf("\n");

    long long number=Multnumbers[0];
    for (long long rz=1;rz<11;rz++)
    {
        number = number*10+Multnumbers[rz];
    }
    printf("Big multiple number is %lld\n ", number);


 long long Nonmultnumbers[20];

    for (long long i=0; i < 20; i++) 
    {

        Nonmultnumbers[i] = cardNumz % 10;
        cardNumz /= 100;

    }
    int loopn;
    for(loopn = 0; loopn < 20; loopn++)

      printf("Non multnumbers%lld ", Nonmultnumbers[loopn]);
    printf("\n");

1 Ответ

0 голосов
/ 12 апреля 2020

Если я правильно понял, вы хотите взять цифры (1 и 2) в виде двух ди git цифр (12) для вычисления суммы. Самый простой способ - разделить эти числа на 10, чтобы вычислить первое число git. И используя оператор остатка для вычисления вторых цифр.

Расчет первого ди git. (Это деление не даст 1,2, пока числа являются целыми числами).

int n = 12 / 10 // n will be 1 (1st digit).

Вычисление второго ди git. Используя оператор остатка, %.

int rem = 12 % 10 // rem will be 2 (2nd digit).
...