Дано натуральное число n составить программу формирования массива элементами которого являются цифры числа n

У меня есть следующее задание: дано натуральное число n. Разработать функцию формирования массива, элементами которого являются цифры числа n. Я написал программу, но что-то не так. Если я ввожу с консоли двузначное число, то она просто ничего не выводит. Если я ввожу трехзначное число, то вызывается исключение. Я подозреваю, что это связано с моей переменной len, а также с тем, как я возвращаю массив из функции. Что и как нужно исправить?

int* BuildArray(int n, int* len); int main() < int n, len; scanf_s(«%d», int * arr = BuildArray(n, for (int i = 0; i < len; i++) < printf(«%d «, arr[i]); >return 0; > int* BuildArray(int n, int* len) < int b = n; while (n >0) < n = n / 10; len++; >int* array = (int*)malloc(*len* sizeof(int)); for (int i = len — 1; i >= 0; i—) < array[i] = b % 10; b = b / 10; >return array; free(array);
Отслеживать
задан 29 дек 2021 в 13:39
JasonStatham JasonStatham
21 1 1 бронзовый знак

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Числа Фибоначчи. Уроки программирования на С++ для начинающих.

Во-первых вы не обнулили переменную len

int n, len = 0;

Во-вторых в этом цикле:

while (n > 0) < n = n / 10; len++; >

Вы прибавляете единицы к указателю, а не к переменной.

Правильно будет так:

while (n > 0) < n = n / 10; *len = *len + 1; >

Такая же проблема в следующем цикле здесь:

for (int i = *len — 1; i >= 0; i—) < array[i] = b % 10; b = b / 10; >

В-третьих память в таком коде никогда не будет освобождена, т.к. будет вызван return .

return array; free(array);

Источник: ru.stackoverflow.com

помогите томата вить программу на паскале

type mas = array [1..10] of integer; var m : mas; a,l : integer; function re () : integer; //Считываем числоvar a : integer; begin writeln (‘Введите число’); readln (a); Result :=a; end; function C(var m : mas; a : integer) : integer; //Разбиваем на числаvar i : integer; begin i := 0; While a > 0 do begin i := i +1; m[i] := a mod 10; a := a div 10; end; Result := i; end; procedure wr (a : mas; l : integer); // Вывод массиваvar i : integer; begin writeln (‘Resultat :’); for i := 1 to l do write (a[i],’ ‘); end; procedure sort (var a : mas; l : integer); // перевернуть массив // т.е 1234 -> 4321 var i,buf : integer; begin for i := 1 to l div 2 do begin buf := a[l-i+1]; a[l-i+1] := a[i]; a[i] := buf; end; end; begin a := re(); l := C(m,a); sort (m,l); wr (m,l); end.на примере числа 125после выполнения функции Cm[1] = 5 m[2] =2 m[3] =1после выполнения процедуры Sortm[1] =1 m[2] =2 m[3] =5Вывод на экран элементов массива через пробел1 2 5

Читайте также:
Ubuntu установка программы из архива

СУММА И КОЛИЧЕСТВО ЧЕТНЫХ И НЕЧЕТНЫХ ЧИСЕЛ В ДИАПАЗОНЕ | C# ДОМАШНИЕ ЗАДАНИЯ | #4

Источник: znanija.site

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru