такая задача: Дана строка, содержащая число в двадцатеричной системе исчисления.
Преобразовать число в строке к десятичной системе.
не могли бы вы подсказать, как осуществить сам перевод. Из десятичной понимаю как это сделать, а наоборот нет.
Вот тут есть функции перевода X10 -> Xn и Xn -> X10 на Паскале:
http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=38226
Теперь алгоритм понимаешь?
теперь разобралась, спасибо)
что-то не могу найти аналога функции pos =( переписала так, но что-то не работает, помогите найти ошибку пожалуйста:
Оля, не надо переписывать дословно с Паскаля на С, эти языки по-разному работают со строками. Во-первых, индексация в С всегда начинается с 0, во-вторых, лучше делать так:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
char n[10];
printf("vvedite cislo");
scanf("%s", n);
const int c = 20;
const char str[c + 1] = "0123456789ABCDEFGHIJ";
int m = 0;
for(char *p = n; *p; p++)
{
char *pp = strchr(str, toupper(*p));
m = m * c + (pp - str);
}
printf("%d", m);
return 0;
}
а не могли бы вы немного пояснить строку :
Старт цикла: char *p = n (эквивалентно char* p, p = n)
Условие продолжения цикла: *p - в данном случае применяется то, что любое ненулевое число соответствует булевому значению ПРАВДА, а ноль - ЛЖИ. То есть цикл продолжается, если символ, на который сейчас ссылается p, ненулевой.
И наконец, то, что надо делать между итерациями: p++ - переносим указатель на следующий символ.
Короче, такой заголовок - это стандартный обход строки.