Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.90
kzht91
0 / 0 / 0
Регистрация: 02.07.2010
Сообщений: 19
#1

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

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

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

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

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

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

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

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

Перевод 10-го числа в 2-ое - C++
Народ обьясните пжлста как работает эта функция(быстрое возведение числа в степень a^d mod n) : long powmod(long a, long d, long n) ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
111 / 111 / 3
Регистрация: 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
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
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
111 / 111 / 3
Регистрация: 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
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
17.07.2010, 03:13 #9
Можешь использовать long long тип. Или скачать библиотеку для длинных чисел
0
D@rkD@iver
111 / 111 / 3
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2010, 17:39
Привет! Вот еще темы с ответами:

Перевод числа из 10 в 2 сс - C++
Написать рекурсивную функцию перевода числа из 10 в 2 систему счисления. Помогите пожалуйста.

Перевод числа из 10 с.с. в 8 с.с. - C++
не пойму как создать программу по переводу числа из 10 с.с. в 8 с.с. . Дали несколько задач на расчётно-графическую работу,а учитель толком...

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

Перевод вещественного числа из N сс в K сс - C++
входные данные: вещественное число,его основание и основание,в которое переводится число. Выходные данные: число в K основании. Знаю,на...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.07.2010, 17:39
Ответ Создать тему
Опции темы

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