Исправления кода во функции С(Си)! - C (СИ)
Формулировка задачи:
Написать функция
int
делителей(int [], int pocetx, int у [], Int k)
, от которых полеX
копируются в массив с всех делителей числа, в том порядке, как найдено в массивеX
и возвращает количество элементов массиваY
. Pocetx аргумент задает количество элементов массиваX
. Можно предположить, что аргументY
, будет иметь достаточного размера, чтобы всех делителей чисел, которые находятся в массивеX
.Пример вызова: x = {4, 7, 10, 2, 3, 9, 6, 5, 8, 12} pocetx = 10 pocety = delitele(x, pocetx, y, 24); // вызов функции pocety: 6 // вывод функции y: {4, 2, 3, 6, 8, 12}
#include <stdio.h>
int delitele(int x[], int pocetx, int y[], int k)
int main()
{
int x[10] = {4, 7, 10, 2, 3, 9, 6, 5, 8, 12};
int pocetx = 10;
int y[10];
int i, pocety = delitele(x, pocetx, y, 24);
printf("pocety: %d\ny: {", pocety);
for (i = 0; i < pocety; i++)
{
if (i > 0)
printf(", ");
printf("%d", y[i]);
}
printf("}\n");
return 0;
}Помогите пожалуйста!!! Заранее спасибо!!!
Решение задачи: «Исправления кода во функции С(Си)!»
textual
Листинг программы
#include <stdio.h>
int func(int x[], int size, int y[], int k) {
int cnt = 0;
while (size-- > 0) {
if (k % *x == 0) {
*y++ = *x;
cnt++;
}
x++;
}
return cnt;
}
int main() {
int x[10] = {4, 7, 10, 2, 3, 9, 6, 5, 8, 12};
int y[10];
int pocetx = 10, pocety, i;
pocety = func(x, pocetx, y, 24);
printf("pocety: %d\ny: {", pocety);
for (i = 0; i < pocety; ++i) {
printf("%d, ", y[i]);
}
printf("%s}\n", pocety ? "\b\b" : "");
return 0;
}
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода
- Функция func принимает три аргумента: массив x, его размер size и массив y, инициализированный как пустой массив
- Внутри функции func инициализируется переменная cnt = 0 для подсчета количества найденных элементов
- Используется цикл while для перебора всех элементов массива x. Условие цикла: size > 0
- Внутри цикла проверяется, делится ли k на текущий элемент массива x без остатка. Если да, то значение этого элемента копируется в массив y и увеличивается счетчик cnt
- После проверки каждого элемента массива x, указатель x увеличивается на 1, чтобы перейти к следующему элементу
- По завершении цикла, функция возвращает значение переменной cnt
- В функции main создается массив x с десятью элементами и инициализируется значениями {4, 7, 10, 2, 3, 9, 6, 5, 8, 12}
- Создается массив y, также с десятью элементами, который будет содержать найденные значения
- Инициализируется переменная pocetx со значением 10, которая представляет размер массива x
- Вызывается функция func с аргументами x, pocetx, y, 24
- Результат функции func сохраняется в переменной pocety
- Выводится сообщение
pocety: %d\ny: {и начинается цикл for для вывода значений массива y - В каждой итерации цикла выводится значение y[i] через запятую, пока не будут выведены все значения
- После завершения цикла выводится символ
}\n - Функция main возвращает 0, что означает успешное завершение программы