Найти числа, что сумма первой и второй цифр в их записи равна сумме третей и четвертой - C (СИ)
Формулировка задачи:
Добрый вечер. Помогите решить задачку на языке C можно еще на Паскале.
На интервале (1000 - 9999) найти все простые числа, каждое из которых обладает тем свойством, что сумма первой и второй цифр в записи этого числа равна сумме третей и четвертой. Заранее спасибо.
Решение задачи: «Найти числа, что сумма первой и второй цифр в их записи равна сумме третей и четвертой»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> void fillArr(char *message, int *arr, int n); int main(void) { int n, m, i, j, k; printf("size first array: "); scanf("%i",&n); printf("size second array: "); scanf("%i",&m); int *arr1 = calloc(n, sizeof(int)); int *arr2 = calloc(m, sizeof(int)); int arr[n+m]; fillArr("first", arr1, n); fillArr("second", arr2, m); for (i=0, j=n-1, k=0; i<n+m; ++i) { if (j>=0) { if (k<m && (arr1[j]<arr2[k])) arr[i] = arr1[j--]; else if (k<m) arr[i] = arr2[k++]; else arr[i] = arr1[j--]; } else if (k<m) arr[i] = arr2[k++]; } for (i=n-1; i>=0; --i) printf("%i ", arr1[i]); printf("\n"); for (i=0; i<m; ++i) printf("%i ", arr2[i]); printf("\n"); for (i=0; i<n+m; ++i) printf("%i ", arr[i]); printf("\n"); return 0; } void fillArr(char *message, int *arr, int n) { int i; for (i=0; i<n; ++i) { printf("%s array[%i] = ", message, i); scanf("%i", &arr[i]); } }
Объяснение кода листинга программы
- В начале программы подключаются две стандартные библиотеки C: stdio.h и stdlib.h.
- Далее определены две функции: fillArr и main.
- В функции main создаются и инициализируются переменные: n, m, i, j, k. Переменная n используется для хранения размера первого массива, а переменная m - для размера второго массива.
- Затем происходит запрос на ввод размеров массивов и сохранение этих размеров в переменных n и m соответственно.
- Далее создаются два массива: первый массив arr1 динамически выделяется с помощью функции calloc, а второй массив arr2 также динамически выделяется с помощью функции calloc. Третий массив arr создается для хранения результатов. Его размер определяется как сумма размеров первого и второго массивов.
- После этого вызывается функция fillArr для заполнения первого и второго массивов. Эта функция принимает три параметра: message, arr и n. message указывает, какой массив мы заполняем, arr - это указатель на массив, а n - это размер массива.
- Затем происходит цикл, который начинается с i=0, j=n-1 и k=0. Он выполняется до тех пор, пока i меньше или равно сумме размеров массивов n и m.
- Внутри цикла происходит проверка условия, и если оно выполняется, то значение arr[i] присваивается значению arr1[j] или arr2[k], в зависимости от того, какое из них меньше. Затем j уменьшается на 1, а k увеличивается на 1. Если условие не выполняется, то k увеличивается на 1. Если j меньше или равно 0, то k увеличивается на 1. Если k меньше или равно m, то arr[i] присваивается значение arr2[k]. Если k больше m, то arr[i] присваивается значение arr1[j]. Если j меньше или равно 0, то arr[i] присваивается значение arr1[j].
- После завершения цикла происходит вывод на экран значений первого массива, второго массива и результата.
- В конце программы функция main возвращает 0.
- Функция fillArr выводит сообщение, запрашивает значение и сохраняет его в массиве.
- В конце функции fillArr возвращается 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д