Трудности с возвращением массива Си - C (СИ)

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

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

В общем есть задача 1. Реализовать функции нахождения наибольшего общего делителя и наименьшего общего кратного двух натуральных чисел. 2. Дано натуральное число n. Разработать функцию формирования массива, элементами которого являются цифры числа n. Всё вродё бы работает, но препод попросил, чтобы функция возвращала массив! Я попробовал что-то сделать... в итоге он сказал, что у меня нет информации про размер массива.. Короче вопрос к вам, как сделать, чтобы функция возвращала массив?( не обязательно чтобы в консоли отображалось), скорее всего у меня неверно это сделано.
#include <stdio.h>
#include <locale.h>
 
int NOD(int a, int b)
{
    while (a != b)
        if (a>b)
            a -= b;
        else
            b -= a;
    return a;
}
int NOK(int a,int b)
{
    int c;
    c=a*b/NOD(a,b);
    return c;
    
}
int* mass(int num)
{ 
    int *array =new int[100];
    int count = 0,tmp;
    tmp=num;
    while (tmp>0)
    {
        count++;
        tmp=tmp / 10;
    }
    for (int i = 0; i < count; i++)
    {
        array[i]=num % 10;
        num/=10;
        printf("%d", array[i]);
    }
    return array;
}
int main()
{
    int a, b, c, d, num;
    printf("zadanie 1 \n");
    printf("Vvedite a and b \n");
    scanf("%d%d", &a, &b);
    d=NOD(a,b);
    c=NOK(a,b);
    printf("NOD:%d\nNOK:%d\n\n", c, d);
    printf("zadanie 2 \n");
    printf("vvedite chyslo \n");
    scanf("%d", &num);
    mass(num);
  
}

Решение задачи: «Трудности с возвращением массива Си»

textual
Листинг программы
int mass(int** arr)
{
    int count = 0, tmp;
    tmp=num;
    while (tmp>0)
    {
        count++;
        tmp=tmp / 10;
    }
     *arr=(int*)malloc(sizeof(int)*count);
    for (int i = 0; i < count; i++)
    {
        (*arr)[i]=num % 10;
        num/=10;
        printf("%d", *arr[i]);
    }
    return count;
}

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

В этом коде:

  1. В функции mass объявлены две переменные: count и tmp. Значение count инициализируется как 0, а tmp как num.
  2. В цикле while происходит деление tmp на 10 и увеличение count на 1 до тех пор, пока tmp больше 0. Это означает, что код извлекает цифры из числа num, используя деление на 10 как способ получения последней цифры.
  3. После окончания цикла while, count будет содержать количество цифр в числе num.
  4. С помощью malloc выделяется память для массива count элементов типа int.
  5. В цикле for значения каждой ячейки массива инициализируются как остаток от деления num на 10. Значение num затем делится на 10, чтобы получить следующую цифру.
  6. Каждое значение массива выводится с помощью printf.
  7. Функция возвращает значение count. Похоже, что этот код предназначен для разделения числа на его отдельные цифры и сохранения этих цифр в массиве.

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

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