Определить количество счаливых билетов если количество цифр задаётся пользователем - 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; }
Объяснение кода листинга программы
Вывод: Код принимает от пользователя количество цифр, затем принимает сами цифры и считает количество счастливых чисел. Список действий:
- Включаем необходимые заголовочные файлы
- Определяем значение переменной CHAR_ZERO, которая равна числу 48 (это ASCII-код цифры 0)
- Создаем функцию isHappy, которая принимает два аргумента: массив цифр и их количество
- Внутри функции создаем переменные n, i, j, odd и even, а также указатель digit и строку buf
- С помощью цикла for перебираем каждую цифру в массиве
- Преобразуем каждую цифру в строку с помощью функции itoa и сохраняем её в buf
- С помощью цикла for перебираем каждую букву в полученной строке
- Если текущая буква является чётной (то есть её ASCII-код делится на 2 без остатка), то добавляем к odd сумму её ASCII-кода минус 48
- Если текущая буква является нечётной, то добавляем к even сумму её ASCII-кода минус 48
- Если odd равно even, то увеличиваем счётчик n на 1
- Возвращаем n в качестве результата работы функции
- В функции main запрашиваем у пользователя количество цифр и сохраняем его в переменную number
- Выделяем с помощью malloc память под массив цифр и сохраняем его указатель в переменную digits
- С помощью цикла for запрашиваем у пользователя каждую цифру и сохраняем её в соответствующий элемент массива
- Вызываем функцию isHappy, передавая ей массив цифр и их количество
- Выводим результат на экран с помощью функции printf
- Освобождаем память, выделенную под массив цифр, с помощью функции free
- Ждём нажатия клавиши с помощью функции getch
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д