Пятница, 22 Ноября 2024, 02:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите создать калькулятор, пожалуйста!
УайльдДата: Пятница, 12 Декабря 2014, 19:21 | Сообщение # 1
участник
Сейчас нет на сайте
Калькулятор для перевода чисел из любой системы счисления в любую через десятичную... на С#;
Уже долгое время не могу придумать, как осуществить это, поэтому прошу помощи. Даже не представляю. В просторах Интернета не могу найти ничего подходящего.
Помогите, пожалуйста...




Сообщение отредактировал Уайльд - Пятница, 12 Декабря 2014, 19:21
XakepДата: Пятница, 12 Декабря 2014, 19:40 | Сообщение # 2
めちゃくちゃちゃ
Сейчас нет на сайте
вот первая попавшаяся ссылка в интернете: http://inf.e-alekseev.ru/text/Schisl_perevod.html
сначала разберись как это без программирования делать (на листике вручную), а потом все довольно просто.


Сообщение отредактировал Xakep - Пятница, 12 Декабря 2014, 19:40
УайльдДата: Пятница, 12 Декабря 2014, 19:55 | Сообщение # 3
участник
Сейчас нет на сайте
Xakep, у меня есть идеи, но я не могу их осуществить в силу того, что ещё не до конца разобрался с char, string, этими символами, как их отделять, я вообще в этом плане полный 0; а завтра уже сдавать... думал, что сумею самостоятельно разобраться... и вот вам...

XakepДата: Пятница, 12 Декабря 2014, 20:15 | Сообщение # 4
めちゃくちゃちゃ
Сейчас нет на сайте
ну тебе наверное просто для лабораторной работы, так можешь тогда просто записать все числа в массив char* который вводится с клавиатуры, чтобы получить число из массива: in_date[index] -= '0'; таким образом можно перевести символ в число, т.к. каждый символ это по сути число от 0 до 255, только этими числами кодируются символы, а отняв '0' мы отнимем код, которым кодируется символ '0', и тем самым получим число. Чтобы определить размер массива, который ты ввел с клавиатуры, можно воспользоваться этим макросом:
#define ARRAYSIZE(a) ((sizeof(a) / sizeof(*(a))) / static_cast<size_t>(!(sizeof(a) % sizeof(*(a)))))

либо фиксировано задать максимальную длину массива, например 256, и считать с массива каждый символ, пока не встретишь '\0'. Ну а дальше все просто, простейшие арифметические процедуры, как в статье, которую я тебе скинул.
УайльдДата: Пятница, 12 Декабря 2014, 20:47 | Сообщение # 5
участник
Сейчас нет на сайте
Xakep, спасибо большое. Но я всё равно в большой попе. Хотя уже не в такой большой. biggrin
Это для расчётно-графической работы по информатике...




Сообщение отредактировал Уайльд - Пятница, 12 Декабря 2014, 20:48
XakepДата: Пятница, 12 Декабря 2014, 21:00 | Сообщение # 6
めちゃくちゃちゃ
Сейчас нет на сайте
вот нашел: http://www.cyberforum.ru/cpp-beginners/thread909281.html
в примере как я понял из 10ричную системы в 36рисную систему исчисления перевели число, которое находится в массиве s;
Код

#include <iostream.h>
#include <cstring>
#define DIG "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ"
using namespace std;
     
int Atoi(char *s, int p){
      int i, a, digit[256] = {0};
      for(i = 0; DIG[i]; i++)
          digit[DIG[i]] = i;
      for(i = a = 0; s[i]; i++)
          a = a * p + digit[s[i]];
      return a;
}
     
void Itoa(int a, int p, char *s) {
     static int i = 0, n;
     if (a) {
        ++i;
        Itoa(a / p, p, s);
        s[n - i--] = DIG[a % p];
     }
     else
        s[n = i] = '\0';
}
     
int main(){
     char s[1024] = "29234652";
     Itoa(Atoi(s, 10), 36, s);
     cout << s << endl;
     return 0;
}


Сообщение отредактировал Xakep - Пятница, 12 Декабря 2014, 21:02
-l33t-h4xx-Дата: Суббота, 13 Декабря 2014, 17:39 | Сообщение # 7
участник
Сейчас нет на сайте
Цитата Уайльд ()
на С#;

Xakep, я бы не спешил.


Как правильно задавать вопросы
XakepДата: Суббота, 13 Декабря 2014, 18:48 | Сообщение # 8
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата -l33t-h4xx- ()
#define DIG "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ"

Цитата -l33t-h4xx- ()
Эх, Xakep, Xakep!..

тут же система исчисления может быть не только 10ричной , а если больше 10ричной то там уже идут буквы, например в 16ричной системе, так что я не совсем понял... ну а то что не на C# то это да, как-то я упустил этот момент )) но все равно, мне кажется не так сложно перевести этот код на C#
RangerДата: Суббота, 13 Декабря 2014, 20:59 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
Цитата Уайльд ()
не до конца разобрался с char, string, этими символами, как их отделять, я вообще в этом плане полный 0; а завтра уже сдавать...

Эхххх удручают меня подобные будущие специалисты.
Потом удивляемся, что ракеты падают ((


xaker-01Дата: Воскресенье, 14 Декабря 2014, 09:12 | Сообщение # 10
уже был
Сейчас нет на сайте
Цитата Уайльд ()
ом удивляемся, что ракеты падают ((

еще актуально?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг