Определить количество счаливых билетов если количество цифр задаётся пользователем - C (СИ) (75155)

Узнай цену своей работы

Формулировка задачи:

определить количество счаливых билетов если количество цифр задаётся пользователем и оно чётное и меньше или равно 10 . счасливым является билет у которого сума цифр на чётных позициях равна суме цифр на нечётных позициях.

Решение задачи: «Определить количество счаливых билетов если количество цифр задаётся пользователем»

textual
Листинг программы
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define CHAR_ZERO 48
 
int isHappy(int *digits, int number) {
    int n = 0, i, j, odd = 0, even = 0;
    char *digit;
    char buf[10];
    for(i = 0; i < number; i++) {
        digit = itoa(digits[i], buf, 10);
        for(j = 0; j < strlen(digit); j++) {
            if(j % 2 == 0) {
                odd += (int)digit[j] - CHAR_ZERO;
            } else if(j % 2 != 0) {
                even += (int)digit[j] - CHAR_ZERO;
            }
        }
        if(odd == even) {
            n++;
        }
 
    }
    return n;
}
 
int main() {
    int number, i, n;
    int *digits;
    printf("Enter the number of digits:");
    scanf("%d", &number);
    digits = (int *)malloc(number * sizeof(int));
    for(i = 0; i < number; i++)
        scanf("%d", &digits[i]);
    n = isHappy(digits, number);
    printf("Number of happy digits is: %d", n);
    free(digits);
    getch();
    return 0;
}

Объяснение кода листинга программы

Вывод: Код принимает от пользователя количество цифр, затем принимает сами цифры и считает количество счастливых чисел. Список действий:

  1. Включаем необходимые заголовочные файлы
  2. Определяем значение переменной CHAR_ZERO, которая равна числу 48 (это ASCII-код цифры 0)
  3. Создаем функцию isHappy, которая принимает два аргумента: массив цифр и их количество
  4. Внутри функции создаем переменные n, i, j, odd и even, а также указатель digit и строку buf
  5. С помощью цикла for перебираем каждую цифру в массиве
  6. Преобразуем каждую цифру в строку с помощью функции itoa и сохраняем её в buf
  7. С помощью цикла for перебираем каждую букву в полученной строке
  8. Если текущая буква является чётной (то есть её ASCII-код делится на 2 без остатка), то добавляем к odd сумму её ASCII-кода минус 48
  9. Если текущая буква является нечётной, то добавляем к even сумму её ASCII-кода минус 48
  10. Если odd равно even, то увеличиваем счётчик n на 1
  11. Возвращаем n в качестве результата работы функции
  12. В функции main запрашиваем у пользователя количество цифр и сохраняем его в переменную number
  13. Выделяем с помощью malloc память под массив цифр и сохраняем его указатель в переменную digits
  14. С помощью цикла for запрашиваем у пользователя каждую цифру и сохраняем её в соответствующий элемент массива
  15. Вызываем функцию isHappy, передавая ей массив цифр и их количество
  16. Выводим результат на экран с помощью функции printf
  17. Освобождаем память, выделенную под массив цифр, с помощью функции free
  18. Ждём нажатия клавиши с помощью функции getch
  19. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы