| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Строки |
| Автор: Ursa 17.3.2012, 16:14 | ||
| Здесь идёт преобразования из двоичной в 16теричную систему,помогите пожалуйста сделать,чтобы из 10тиричной в восьмиричную. Код:
|
| Автор: Cheloveck 17.3.2012, 17:25 |
Нет, здесь идёт бред сивой кобылы. |
| Автор: Ursa 17.3.2012, 18:47 | ||
Почему? Всё работает. |
| Автор: Randajad 17.3.2012, 19:34 |
| Потому что писал человек ума недалекого. #include <stdio.h> int convert(long long n, char p) { int ret = 0; for(int k = 1; n; n /= 10, k *= p) ret += (n % 10) * k; return ret; } int main() { long long n; scanf("%lld", &n); printf("\nres %d", convert(n, 8)); } Так лучше. convert() переводит из любой системы число и возвращает десятичное. Первый параметр - число. Второй - система отсчета. Для перевода из десятичной в какую-либо другую и в строку - itoa. А еще можно (s)scanf, (s)printf с %o, %d, %x. |
| Автор: Ursa 17.3.2012, 20:14 |
| Я это как бы понимаю,но так получается не по условию задания. |
| Автор: volatile 17.3.2012, 23:44 |
borisbn, там слишком круто написано. Нужно написать в стиле первого сообщения. Чтобы ни у кого не возникло сомнений в авторстве |
| Автор: borisbn 17.3.2012, 23:58 |
| volatile, Не смотрел первое сообщение. После того, как Вы обратили внимание, глянул... Вполне себе приличный неработающий индокод. Интересно, если б нужно было бы преобразовать в base64 - было бы 64 case'а? |
| Автор: Randajad 18.3.2012, 10:22 |
| Это был как вариант с консольным приложением-переводчиком чисел из разных систем счисления. Задачу свою оно выполняет. Что не так-то? Почему должны быть строки? С ними и работать медленнее. base64 - кодирование информации, к сведению. |
| Автор: borisbn 18.3.2012, 10:50 | ||
| Randajad, повторю - числа не могут быть в какой-либо системе исчисления. Числа - это количество. А вот представление числа/количества может быть в любой системе исчисления. Попробуй своей функцией преобразовать в 16-тиричную систему и всё поймёшь с какого перепугу? HEX тогда тоже кодирование?
http://ru.wikipedia.org/wiki/Base64 |
| Автор: Randajad 18.3.2012, 12:08 | ||
| :С Действительно, как-то про что-то более 10 не подумал. Ну тогда:
|
| Автор: borisbn 18.3.2012, 12:14 |
- 10 то зачем ? наверное, ты хотел + 10 и строка на входе должна быть перевёрнутая |
| Автор: Randajad 18.3.2012, 12:23 | ||
| Пардон. Вот так лучше!
Именно - 10. Потому что c = c - 'a' + 10 будет именно как c -= 'a' - 10. |
| Автор: Ursa 18.3.2012, 19:43 |
| Спасибо всем. |