Помощь - Поиск - Пользователи - Календарь
Полная версия: Перевод из 10ой в 16ую с.с.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Rudolf
Программа работает но только с первыми 16 ю числами smile.gif Помогите пожалста исправить...

#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
clrscr();
int n;
char s;
const char digit[16]="0123456789ABCDEF";
cin>>n;
while (n != 0)
{
s=digit[(n % 16)]+s;
n=n / 16;
}
cout<<s;
getch();
return 0;

}

Rudolf
Я так и сделал, только она не работает все равно...там помоему я вместо паскалевского div поставил просто / , может в этом ошибка?
klem4
char s;

char - символ, а нужна строка, это во первых

Volvo, опоздал ;)
volvo
Нет... Ошибка в том, что char в С и string в Паскале - совершенно разные вещи... Ты просто суммируешь в S что-то, а в строке символы склеиваются...

P.S.

Rudolf, кстати, зачем изобретать свое, если есть готовое? itoa, например...
Rudolf
ошибку понял...
то volvo: Что такое itoa?
klem4
itoa
Rudolf
Спасибо за такую полезную функцию smile.gif Но думаю препод этого не поймет dry.gif
вобщем я переделал через функцию сцепления строк, но теперь выводит вдобавок к числу еще и непонятные символы

#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(void) {
clrscr();
int n,i;
char s[25],*ch;
const char digit[16]="0123456789ABCDEF";
cin>>n;
i=n;
while (n != 0)
{
if (n==i) {
*ch=digit[(n % 16)];
strcpy(s,ch);
}
else {
*ch=digit[(n % 16)];
strcat(s,ch);
}
n=n / 16;
}
cout<<s;
getch();
return 0;

}

volvo
#include <conio.h>
#include <iostream.h>
#include <string.h>
int main(void) {

clrscr();
int n, pos = 0;

char s[25];
const char digit[16]="0123456789ABCDEF";
cin >> n;
while(n) {
s[pos++] = digit[(n % 16)];
n /= 16;
}

s[pos] = '\0';
strrev(s);

cout << s;
getch();
return 0;
}
Так лучше?
Rudolf
Конечно лучше smile.gif Спасибо!!volvo ты как всегда просто спаситель smile.gif
volvo
Вопрос на засыпку: а почему у тебя выводило какой-то мусор кроме правильного значения, ты разобрался?
Rudolf
Да...наверно потому что символа конца строки не было???
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.