Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/63: Рейтинг темы: голосов - 63, средняя оценка - 4.97
kzht91
0 / 0 / 0
Регистрация: 02.07.2010
Сообщений: 19
1

Перевод числа в массив

16.07.2010, 18:59. Просмотров 12173. Ответов 10
Метки нет (Все метки)

Здравствуйте. У такой меня вопрос: могу ли я перевести n-значное число в массив из n элементов. Например 123 = {1, 2, 3}???
Мне нужно для решения задачи по длинной арифметике на срр.
Или может лучше считать число каким-либо другим способом, чтобы потом поразрядно складывать с другим?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2010, 18:59
Ответы с готовыми решениями:

Перевод числа в массив.
В программе есть функция, которая принимает на вход целое число и символьный массив(строку). Нужно...

перевод из числа в прописной вид не массив
Здравствуйте товарищи!Нужна ваша помощь в исправлении кода. Что нужно мне изменить в коде что бы...

Функция: перевод числа с плавающей точкой в текст (массив char-ов)
Задача звучит так написать функцию перевода числа с плавающей точкой(double) в текст (массив...

Перевод числа из одной с.с. в другую, манипуляции с цифрами числа
Здравствуйте! У меня такая проблема... Есть программа, выполняющая определенные операции с...

Бинарные числа! Перевод простого числа в бираное и расчет.
Здравствуйте!Я понимаю, что моя просьба банальна, но я правда не могу никак разобраться с бинарными...

10
ForEveR
В астрале
Эксперт С++
8009 / 4766 / 654
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 19:25 2
Можно записать в char str[]. Функцией itoa(int val,char*buf, 10) //Вроде такой прототип.
Затем вычесть у каждого элемента строки '0'.
И записать это в int A[]. Может поможет

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring>
int main()
{
    char Str[255];
    int Arr[255], Val=0;
    Val=345;
    itoa(Val, Str, 10);
    for(int i=0;i<strlen(Str);i++)
    {
        Str[i]=Str[i]-'0';
        Arr[i]=Str[i];
        std::cout<<"Arr: "<< Arr[i] <<'\n';
    }
    return 0;
}
0
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 20:25 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int n=0;
int temp;
while (x>0)
{
     mas[n]= x%10;
     x= x/10;
     n++;   
}
 
for (int i=0; i<=n/2; i++)
{
      temp= mas[i];
      mas[i]= mas[n-i-1];
      mas[n-i-1]= temp;
}
1
kzht91
0 / 0 / 0
Регистрация: 02.07.2010
Сообщений: 19
16.07.2010, 20:25  [ТС] 4
Все работает, но когда число большое например 16854684351461, он выводит 0...Почему???
0
16.07.2010, 20:25
Ignat
1251 / 789 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
16.07.2010, 20:33 5
А не слишком ли большое число для int
0
kzht91
0 / 0 / 0
Регистрация: 02.07.2010
Сообщений: 19
16.07.2010, 20:36  [ТС] 6
В том то и дело... Мне надо вводить цифры от 0 до 10^100. Потом поразрядно складывать с таким же большим числом. Ну длинная арифметика. Я делал как то сумму массивов. получилось, теперь просто числа даны большие, не могу придумать
0
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
16.07.2010, 20:52 7
kzht91, сразу считывай в массив да и все
вот как считать с файла
C
1
2
3
4
char str[1000];
fscanf(f, "%s", str);
for(i=0; i<strlen(str); i++)
mas[i]= str[i]-'0';
0
kzht91
0 / 0 / 0
Регистрация: 02.07.2010
Сообщений: 19
17.07.2010, 01:46  [ТС] 8
Во спасибо!)))) Заработало!)))

Добавлено через 4 часа 47 минут
Блин весь мучался, никак не могу написать код, уже сообразил вроде, но какие то ошибки выходят. Помогите написать эту программу. Это A+B, где А и В не превышают 10^100. Буду признателен.
0
ForEveR
В астрале
Эксперт С++
8009 / 4766 / 654
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
17.07.2010, 03:13 9
Можешь использовать long long тип. Или скачать библиотеку для длинных чисел
0
D@rkD@iver
112 / 112 / 13
Регистрация: 01.10.2008
Сообщений: 876
17.07.2010, 07:55 10
kzht91, где хранится длина массива?
ии для таких целей лучше хранить число задом наперед
0
kzht91
0 / 0 / 0
Регистрация: 02.07.2010
Сообщений: 19
17.07.2010, 17:39  [ТС] 11
Ну для того чтобы складывать поразрядно и начинать с единиц, т.е. с конца массива

Добавлено через 1 час 22 минуты
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
#include <iostream>                     
#include <string.h>
#include <math.h>
using namespace std;
 
int main() {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    char sa[102] = {0}, sb[102] = {0};
    int i, ma[102], mb[102], r[102] = {0}, str;
    cin >> sa >> sb;
    if(strlen(sa) > strlen(sb)) str = strlen(sa);
    else str = strlen(sb); 
 
    for(i=0; i<str; i++) ma[i] = sa[i] - '0';
    for(i=0; i<str; i++) mb[i] = sb[i] - '0';
 
    for(i=0; i<str; i++) cout << sa[i];
    cout << endl;
    for(i=0; i<str; i++) cout << sb[i];
    cout << endl;
 
    for(i=str-1; i>=0; i--) {
        r[i] = ma[i] + mb[i];
        if(r[i] > 9) {
            r[i] = r[i]%10;
            r[i-1]++;
        }   
    }
    for(i=0; i<str; i++) { 
        cout << r[i];
    }
}
Объясните в чем ошибка. Это сумма чисел, но почему то не пашет
0
17.07.2010, 17:39
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2010, 17:39

Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив
Нужна помощь! Срочно! Нужно ввести в программу строку (числа, латиница), считать только числа,...

Заполнить массив случайными числами в интервале [1,N] так, чтобы в массив обязательно вошли все числа от 1 до N
Заполните массив из N элементов случайными числами в интервале так, чтобы в массив обязательно...

перевод числа
подскажите как перевести в 10ую систему число которое записано в двух ячейках массива : a=10; a=99...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.