![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
![]()
Здравствуйте. Вопрос, наверняка, простой.
У меня есть строка "123456789". Мне нужно каждый символ из этой строки записать посимвольно в элементы целочисленного массива, так чтобы получился массив типа: a[0]=1; a[1]=2; ну и так далее... Код:
123456789 23456789 3456789 456789 56789 6789 789 89 9 Я так подозревал, что optarg - это строка, т.е. массив символов, т.е. каждый символ можно считать отдельно и записать как отдельное число. Или я не прав? optarg - это аргумент командной строки. использую компилятор g++. Как всё же будет правильно? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
![]()
Вообще задание целиком, это написать программу, которая будет складывать, вычитать, умножать длинные числа. Но с длинным числом просто так не поработать, даже long long int не хватит... вот и придумал считать в массив и потом уже писать функции для массивов. Но не могу даже считать нормально... too bad (
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 28.02.2011
Сообщений: 122
|
![]()
Чтобы работать с "большими" числами лучший вариант использовать тип double. Используя его, можно, например, посчитать факториал чисел до 170 с приемлимой точностью. Если же использовать int можно увидеть чудеса, например если попробовать из числа 123456789 вычесть 123456788 то программа выдаст 8 вместо 1. Все эти чудеса связаны со стандартом IEEE-758, попробуй погуглить, почитать статьи на эту тему (уверен найдешь много много чего интересного), т.к. обычно наряду с этими статьями идут описания методов преодоления некоторых из чудес. Но использовать для этой цели массивы, на мой взгляд не очень-то хорошо. Более ценного ответить не могу на твой вопрос, извиняй
![]()
Повторенье - мать ученья. И прибежище для лентяев.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
![]()
Не знаю, мне показалось наиболее простым решением записать числа в массивы и написать арифметические функции...
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 28.02.2011
Сообщений: 122
|
![]()
Ммм, мне кажется, я немного не понял проблемы. То есть мы записываем два больших числа в массивы и потом, к примеру, перемножаем их словно на листе бумаги, работая с каждой цифрой отдельно, верно?
![]()
Повторенье - мать ученья. И прибежище для лентяев.
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 04.06.2011
Сообщений: 104
|
![]()
Ну да, вроде того...
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 28.02.2011
Сообщений: 122
|
![]()
Все, я понял, почему у тебя так не получилось. Ты даешь atoi(), адрес элемента, с которого считывать строку. Эта функция переводит в числовой вид всю строку до '\0', вот поэтому она тебе и выводит такие чудеса. Чтобы сделать как ты задумал, придется собрать что-то вроде кластера, состоящего из строковых массивов. Тогда каждый элемент этого кластера (в конце каждого элемента будет '\0') будет переводиться в число.
atoi() переводит в число всю строку. То есть весь массив, начиная с элемента, адрес которого ты ей сунул. А вот как собрать такой кластер я пока что не знаю ![]()
Повторенье - мать ученья. И прибежище для лентяев.
|
![]() |
![]() |
![]() |
#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 |