IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> системы исчисления, Pelles С for Windows
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 125
Пол: Женский

Репутация: -  1  +


такая задача: Дана строка, содержащая число в двадцатеричной системе исчисления.
Преобразовать число в строке к десятичной системе.

не могли бы вы подсказать, как осуществить сам перевод. Из десятичной понимаю как это сделать, а наоборот нет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вот тут есть функции перевода X10 -> Xn и Xn -> X10 на Паскале:
Общие вопросы по математике.

Теперь алгоритм понимаешь? smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(*оля* @ 2.12.2010 11:29) *
Из десятичной понимаю как это сделать, а наоборот нет.
Наоборот как раз проще. Потому что бОльшую часть работы за тебя сделает стандартный вывод на печать )). Это, конечно, если числа не очень большие.

(15)(04)(12)(08)(03)(17) = ((((15*20 + 4)*20 +12)*20 + 8)*20 + 3)*20 + 17


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 125
Пол: Женский

Репутация: -  1  +


теперь разобралась, спасибо)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 125
Пол: Женский

Репутация: -  1  +


что-то не могу найти аналога функции pos =( переписала так, но что-то не работает, помогите найти ошибку пожалуйста:

Код

int main(int argc, char *argv[])
{char n[10];
    printf("vvedite cislo");
    scanf("%s", n);
const char str[20]="123456789ABCDEFGHIJK";
const int c=20;
    int m=0;
    for(int i=1; i<= strlen(n); i++){
        int j;
        j=0;
        while (str[j]!=n[i]){j+=j;}
        int m=m*c+j-1;}
        printf("%d", m);
    /* TODO: Enter code here */
    return 0;
}

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Оля, не надо переписывать дословно с Паскаля на С, эти языки по-разному работают со строками. Во-первых, индексация в С всегда начинается с 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;
}


Обрати внимание, 20-ричная СС - это цифры 0 .. 9 и буквы A .. J, а не 1 .. 9 и A .. K smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 125
Пол: Женский

Репутация: -  1  +


а не могли бы вы немного пояснить строку :

Код

for(char *p = n; *p; p++)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Старт цикла: char *p = n (эквивалентно char* p, p = n)
Условие продолжения цикла: *p - в данном случае применяется то, что любое ненулевое число соответствует булевому значению ПРАВДА, а ноль - ЛЖИ. То есть цикл продолжается, если символ, на который сейчас ссылается p, ненулевой.
И наконец, то, что надо делать между итерациями: p++ - переносим указатель на следующий символ.

Короче, такой заголовок - это стандартный обход строки.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 6:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name