|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.06.2012, 18:58 | #1 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
C++ Перевести строку, в которой записано длинное целое, посимвольно в int массив.
Здравствуйте. Вопрос, наверняка, простой.
У меня есть строка "123456789". Мне нужно каждый символ из этой строки записать посимвольно в элементы целочисленного массива, так чтобы получился массив типа: a[0]=1; a[1]=2; ну и так далее... Код:
123456789 23456789 3456789 456789 56789 6789 789 89 9 Я так подозревал, что optarg - это строка, т.е. массив символов, т.е. каждый символ можно считать отдельно и записать как отдельное число. Или я не прав? optarg - это аргумент командной строки. использую компилятор g++. Как всё же будет правильно? |
07.06.2012, 19:01 | #2 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
Вообще задание целиком, это написать программу, которая будет складывать, вычитать, умножать длинные числа. Но с длинным числом просто так не поработать, даже long long int не хватит... вот и придумал считать в массив и потом уже писать функции для массивов. Но не могу даже считать нормально... too bad (
|
07.06.2012, 19:58 | #3 |
Форумчанин
Регистрация: 28.02.2011
Сообщений: 122
|
Чтобы работать с "большими" числами лучший вариант использовать тип double. Используя его, можно, например, посчитать факториал чисел до 170 с приемлимой точностью. Если же использовать int можно увидеть чудеса, например если попробовать из числа 123456789 вычесть 123456788 то программа выдаст 8 вместо 1. Все эти чудеса связаны со стандартом IEEE-758, попробуй погуглить, почитать статьи на эту тему (уверен найдешь много много чего интересного), т.к. обычно наряду с этими статьями идут описания методов преодоления некоторых из чудес. Но использовать для этой цели массивы, на мой взгляд не очень-то хорошо. Более ценного ответить не могу на твой вопрос, извиняй
Повторенье - мать ученья. И прибежище для лентяев.
|
07.06.2012, 20:13 | #4 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
Не знаю, мне показалось наиболее простым решением записать числа в массивы и написать арифметические функции...
|
07.06.2012, 20:44 | #5 |
Форумчанин
Регистрация: 28.02.2011
Сообщений: 122
|
Ммм, мне кажется, я немного не понял проблемы. То есть мы записываем два больших числа в массивы и потом, к примеру, перемножаем их словно на листе бумаги, работая с каждой цифрой отдельно, верно?
Повторенье - мать ученья. И прибежище для лентяев.
|
08.06.2012, 05:32 | #6 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
Ну да, вроде того...
|
08.06.2012, 09:42 | #7 |
Форумчанин
Регистрация: 28.02.2011
Сообщений: 122
|
Все, я понял, почему у тебя так не получилось. Ты даешь atoi(), адрес элемента, с которого считывать строку. Эта функция переводит в числовой вид всю строку до '\0', вот поэтому она тебе и выводит такие чудеса. Чтобы сделать как ты задумал, придется собрать что-то вроде кластера, состоящего из строковых массивов. Тогда каждый элемент этого кластера (в конце каждого элемента будет '\0') будет переводиться в число.
atoi() переводит в число всю строку. То есть весь массив, начиная с элемента, адрес которого ты ей сунул. А вот как собрать такой кластер я пока что не знаю, попробуй че-нибудь порыть.
Повторенье - мать ученья. И прибежище для лентяев.
|
10.06.2012, 14:25 | #8 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
Мне помогло:
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевести массив байтов в int и string на языке Си | iukash | Общие вопросы C/C++ | 2 | 11.05.2012 10:09 |
Char строку в int массив (C) | Ael | Общие вопросы C/C++ | 6 | 06.11.2010 00:22 |
Длинное целое | The riddle | Помощь студентам | 5 | 13.06.2009 15:45 |
Длинное целое | The riddle | Помощь студентам | 0 | 07.06.2009 11:06 |
Задание на типовой расчет: Какое наибольшее целое число без знака может быть записано в N двоич.разрядах? | Бубликова | Фриланс | 10 | 06.12.2008 10:35 |