0 / 0 / 0
Регистрация: 21.06.2020
Сообщений: 50
1

Записать цифры целого числа в динамический массив

24.10.2020, 16:44. Показов 1144. Ответов 6

Самостоятельно реализуйте программу, в которой введённое пользователем неотрицательное целое число записывается в malloc-массив его цифр, причём изначально массив создаётся размером в одну ячейку и динамически расширяется на нужное количество ячеек (по количеству цифр
во вводимом числе). Дополнительное уточнение – разрядность вводимого числа заранее не известна, в программе допускается использовать лишь один цикл.
Получился такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <string>
using namespace std;
 
int main() {
    int temp;
    cin >> temp;
    const int N = temp;
 
    //находим количество цифр в числе.
    int count = 1;
    temp = N; // Переписываем значение N в temp и работаем с temp
    while (temp /= 10)
        count++;
    //выделяем память для массива с переменной count 
    int* p;
    p = new int[count];
    //заполняем массив
    int i = 0;
    temp = N;  // Переписываем значение N в temp и работаем с temp    
    do {
        p[i++] = temp % 10;
        temp = temp / 10;
    } while (temp); 
    //выводим массив
    for (int i = 0; i < count; i++)
        cout << p[i] << ' ';
}
Но он выводится цифры числа наоборот и тут больше 1 цикла, как можно исправить?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2020, 16:44
Ответы с готовыми решениями:

Записать в массив цифры целого семизначного числа
1. N-целое семизначное число, вводится пользователем. Проверка на семизначность обязательна! ...

Найти делители целого числа и записать их в массив
У меня проблема в том, что массив делителей MasD записываются непонятные числа. Коротко о моем...

Найти простые делители целого числа n введенного с клавиатуры и записать в массив
Есть код который определяет делители числа введенного с клавиатуры, что нужно исправить чтобы...

Записать в массив по порядку цифры числа N
дано число N. Записать в массив по порядку цифры числа N.

6
Модератор
Эксперт С++
12071 / 9754 / 5899
Регистрация: 18.12.2011
Сообщений: 26,185
24.10.2020, 17:45 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
char* digits(int n)
{
    int i = 0;
    char* t = new char[1];
    t[0] = 0;
    while (n)
    {
        char* t2 = new char[i + 2];
        for (int i2 = 0; i2 <= i; i2++)
            t2[i2+1] = t[i2];
        delete[] t;
        t = t2;
        t[0] = n % 10 + '0';
        i++;
        n /= 10;
    }
    return t;
}
 
int main()
{
    int x = 12345;
    char* res = digits(x);
    cout << res;
    delete[] res;
    return 0;
}
1
0 / 0 / 0
Регистрация: 21.06.2020
Сообщений: 50
26.10.2020, 14:04  [ТС] 3
а не можете сделать так, чтобы число вводилось с клавиатуры и количество его цифр тоже выводилось?
0
Модератор
Эксперт С++
12071 / 9754 / 5899
Регистрация: 18.12.2011
Сообщений: 26,185
26.10.2020, 14:53 4
Alexia Harell, неужели Вы самостоятельно не можете написать
C++
1
cin>>x;
и
C++
1
cout<<strlen(res);
0
0 / 0 / 0
Регистрация: 21.06.2020
Сообщений: 50
27.10.2020, 15:23  [ТС] 5
Самостоятельно реализуйте программу, в которой введённое пользователем неотрицательное целое число записывается в malloc-массив его цифр, причём изначально массив создаётся размером в одну ячейку и динамически расширяется на нужное количество ячеек (по количеству цифр
во вводимом числе). Дополнительное уточнение – разрядность вводимого числа заранее не известна, в программе допускается использовать лишь один цикл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <cstdlib>
#include <Windows.h>
#include <ctime>
#include <string>
 
 
using namespace std;
char* digits(int n)
 {
    int i = 0;
    int * u = (int *) malloc(5*sizeof(int));
    t[0] = 0;
    while (n)
    {
        char* t2 = new char[i + 2];
        for (int i2 = 0; i2 <= i; i2++)
            t2[i2 + 1] = t[i2];
        delete[] t;
        t = t2;
        t[0] = n % 10 + '0';
        i++;
        n /= 10;
    }
    return t;
}
int main()
{
    int x;
    cin >> x;
    char* res = digits(x);
    for (char* p = res; *p; ++p)
        std::cout << *p << std::endl;
    delete[] res;
    return 0;
}
У меня получился такой код, но нужно сделать именно malloc массив
0
Диссидент
Эксперт C
26825 / 16734 / 3666
Регистрация: 24.12.2010
Сообщений: 37,456
27.10.2020, 15:35 6
Чудовищное задание! Кто только таких монстров придумывает?!
0
2413 / 1159 / 429
Регистрация: 08.11.2016
Сообщений: 3,232
27.10.2020, 21:41 7
Цитата Сообщение от Alexia Harell Посмотреть сообщение
нужно сделать именно malloc массив
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
int main()
{
    unsigned a, digits = 0;
 
    std::cin >> a;
 
    unsigned char *raw = nullptr;
 
    while (a)
    {
        ++digits;
        raw = (unsigned char *)realloc(raw, sizeof(unsigned char) * digits);
        *(raw + digits - 1) = a % 10;
        a /= 10;
    }
 
    for (unsigned i = digits; i > 0; --i)
        std::cout << (unsigned)*(raw + i - 1) << std::endl;
 
    free(raw);
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2020, 21:41
Помогаю со студенческими работами здесь

Выделить из числа цифры, кратные 3, и записать их в одномерный массив
Ввести целое число N. Выделить из этого числа цифры, кратные 3, и записать их в одномерный...

Выделить из числа цифры кратные 3 и записать их в одномерный массив
Помогите пожалуйста=( Ввести целое число n !Выделить из этого числа цифры кратные 3ём, и записать...

из заданного теста выбрать цифры и записать в массив N ,а буквы - в массив B .Все остальные символы записать в массив S
Привет всем.Помогиет пожалуйста решить задачку из заданного теста выбрать цифры и записать в...

Из заданного текста выбрать цифры и записать в массив N, а буквы- в массив B. Все остальные символы записать в массив S
подскажите как делать Из заданного текста выбрать цифры и записать в массив N, а буквы- в массив...

Дан массив из 10 целых чисел. Записать цифры числа в обратном порядке, используя рекурсию
Например: Массив: 123 34 12 11 87 19 86 64 283 12398 Должен превратиться в: 321 43 21 11 78 91 68...

Ввести целое число N. Выделить из этого числа цифры, кратные 3, и записать их в одномерный массив
Ввести целое число N. Выделить из этого числа цифры, кратные 3, и записать их в одномерный массив.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru