Программа работает но только с первыми 16 ю числами Помогите пожалста исправить...
#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;
}
http://forum.pascal.net.ru/index.php?showtopic=4535
Переводи на Си++ и все готово ...
Я так и сделал, только она не работает все равно...там помоему я вместо паскалевского div поставил просто / , может в этом ошибка?
char s;
char - символ, а нужна строка, это во первых
Volvo, опоздал ;)
Нет... Ошибка в том, что char в С и string в Паскале - совершенно разные вещи... Ты просто суммируешь в S что-то, а в строке символы склеиваются...
P.S.
Rudolf, кстати, зачем изобретать свое, если есть готовое? itoa, например...
ошибку понял...
то volvo: Что такое itoa?
http://www.zsu.zp.ua/lab/help/C/htm/itoa.htm
Спасибо за такую полезную функцию Но думаю препод этого не поймет
вобщем я переделал через функцию сцепления строк, но теперь выводит вдобавок к числу еще и непонятные символы
#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;
}
#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;
}
Конечно лучше Спасибо!!volvo ты как всегда просто спаситель
Вопрос на засыпку: а почему у тебя выводило какой-то мусор кроме правильного значения, ты разобрался?
Да...наверно потому что символа конца строки не было???