Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 02:48   #1
stasito
 
Регистрация: 09.12.2011
Сообщений: 8
По умолчанию Напишите программу, которая принимает два числа, написанные на разных базах( между 2-10 )

Напишите программу, которая принимает два числа, написанные на разных базах( между 2-10 ), основание числa неизвестно. Напишите функцию, которая проверяет, Есть ли пара баз, что если мы используем ее, оказывается, что численные значения равны.
например:
Учитывая, 33 и 200. Числа равны, если 33 в пятеричной системе и 200 в 3-ои системе . в Написание программы использовать функцию.
программа в c++.


помогите пожалуйста!!!!
stasito вне форума Ответить с цитированием
Старый 09.12.2011, 03:24   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

берешь свое число... смотришь какая цифра наименьшая... что бы изначально вычислить диапазон баз... и затем одно из чисел прогоняешь преобразовывая постепенно из всех баз в диапазоне во все базы в диапазоне... и сравниваешь на каждом шаге со вторым числом...
P.S.смотришь какая цифра НАИБОЛЬШАЯ ... описка небольшая)
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 09.12.2011 в 13:24.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 09.12.2011, 09:56   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от VIK_aka_TOR
смотришь какая цифра наименьшая...
это ещё зачем?! Наибольшая цифра интересна... - она даст МИНИМАЛЬНУЮ базу системы счисления 33 (не может быть записью числа с базой менее 4-х)
200 - не может быть записью числа с базой меньше 3-х и т.д.

stasito
и ещё вопрос - а какие системы счисления допустимы?
например, двенадцатеричная? Семнадцатеричная? Двадцатичерёхричная? Шестидесятиричная? и т.д...

а принципиально - да, согласен с VIK_aka_TOR, простой перебор поможет по простому найти ответ. (хотя интуитивно чувствую, что должно быть математически обоснованное решение, без всякого перебора... )


ДОБАВЛЕНО
похоже, что мой вопрос насчёт допустимых значений снимается...
Перечитал название темы. Похоже основания системы счисления может быть только в диапазоне "между 2-10 "
тогда алгоритм такой.
Код:
Иницилизировать булевский признак-флаг, что ответ не найден
нашли МАКСИМАЛЬНУЮ цифру первого числа -> MinSC1
нашли МАКСИМАЛЬНУЮ цифру второго числа -> MinSC2
for (int i = MinSC1+1; i<= 10; i++ )
   for (int j = MinSC2+1; j<= 10; j++ )
      if ( Число_в_системе_счисления( Число1, i )  == Число_в_системе_счисления( Число2, j ) 
               {
                   Выдать ответ: i и j
                   установить булевский признак-флаг, что ответ найден
                   break; // прервать цикл перебора
                }
if (! Признак-флаг )  выдать ответ - что нет подходящих систем счисления

Последний раз редактировалось Serge_Bliznykov; 09.12.2011 в 10:05.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.12.2011, 19:05   #4
stasito
 
Регистрация: 09.12.2011
Сообщений: 8
По умолчанию

спасибо всем!!
Но,Serge_Bliznykov ,можно ли сделать Код без bull?!
stasito вне форума Ответить с цитированием
Старый 09.12.2011, 19:29   #5
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от stasito Посмотреть сообщение
спасибо всем!!
Но,Serge_Bliznykov ,можно ли сделать Код без bull?!
Без быка, что ли? -))

Сделай целочисленный флаг.
1 -- ответ найден
0 -- ответ не найден
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 10.12.2011, 01:49   #6
stasito
 
Регистрация: 09.12.2011
Сообщений: 8
Радость

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Без быка, что ли? -))

Сделай целочисленный флаг.
1 -- ответ найден
0 -- ответ не найден
ggg))))
da,bes byka))))
ya prosto na ivrite uchus,ne znau kak ono tam na russkom nazyvaetsya...
stasito вне форума Ответить с цитированием
Старый 11.12.2011, 01:42   #7
stasito
 
Регистрация: 09.12.2011
Сообщений: 8
Смущение

затем одно из чисел прогоняешь преобразовывая постепенно из всех баз в диапазоне во все базы в диапазоне... и сравниваешь на каждом шаге со вторым числом...



как раз это я и не знаю как сделать...
stasito вне форума Ответить с цитированием
Старый 12.12.2011, 23:46   #8
stasito
 
Регистрация: 09.12.2011
Сообщений: 8
По умолчанию a kak?

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
берешь свое число... смотришь какая цифра наименьшая... что бы изначально вычислить диапазон баз... и затем одно из чисел прогоняешь преобразовывая постепенно из всех баз в диапазоне во все базы в диапазоне... и сравниваешь на каждом шаге со вторым числом...
P.S.смотришь какая цифра НАИБОЛЬШАЯ ... описка небольшая)



a kak ?! v etom i p[roblemma...
stasito вне форума Ответить с цитированием
Старый 13.12.2011, 00:29   #9
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

как варинат попроще... но немного рутинее.. одно число переводится из одной системы в десятиричную, и затем из десятиричной в иную из диапазона и затем сравнивание... как переводятся числа из произвольной в десятичную, и из десятичной в произвольную читай тут... там вполне понятно написано... так что дерзай... осталось лишь агнать все это в код...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 13.12.2011, 02:22   #10
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

Или ещё вариант (для систем исчисления 2..10 это несущественно. Но, например, если системы будут 2..1000000 то скорость будет существенной).

Если считать что числа целыми (ну или по крайне мере число либо 0 либо >=1) увеличение основания системы исчисления увеличивает значение для чисел более чем из 1 цифры. (для чисел из 1 цифры значение будет неизменным)
То можно искать следующим образом.

Код:
Система1 = MinSC1 // Или Система1 = Max(MinSC1,Max(ЦифрыЧисла1))
Система2 = MinSC2 // Система2 = Max(MinSC2,Max(ЦифрыЧисла2))
Значение1 = Число_в_системе_счисления(Число1,Система1)
Значение2 = Число_в_системе_счисления(Число2,Система2)

while ((Система1<=MaxSC1&&((Система2<=MaxSC2))
{
  if (Значение1=Значение2)
  {
    // Найдена пара систем исчисления Система1,Система2
  } else
  {
    if (Значение1<Значение2)
    {
      Система1++;
      if (Система1<=MaxSC1)
      {
        Значение1 = Число_в_системе_счисления(Число1,Система1)
      }
    } else
    {
      Система2++;
      if (Система2<=MaxSC2)
      {
        Значение2 = Число_в_системе_счисления(Число2,Система2)
      }
    }
  }    
}
Единственное: Если одно или оба числа состоят из одной цифры то алгоритм может пропустить некоторые комбинации систем исчисления (но по крайней мере одна из комбинаций будет точно найдена)

Если нужны дробные числа то для тех чисел которые <1 нужно менять Система_++ на Система_-- ну и начальные значения соответсвенно.
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."

Последний раз редактировалось val_nnm; 13.12.2011 в 02:38.
val_nnm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите программу, которая демонстрирует использование стиля про-граммиста zig1 Паскаль, Turbo Pascal, PascalABC.NET 1 30.11.2011 09:30
Перенос данных между таблицами в разных базах. Volodq БД в Delphi 3 27.05.2011 11:54
Напишите программу, которая удаляет второй и третий абзацы активного документа. Artur1992 Microsoft Office Word 2 09.01.2011 10:22
Функция, которая сравнивает два целых числа. ~Az@liya~ Помощь студентам 6 15.06.2010 11:09
Напишите программу, которая будет выводить на экран фамилии и имена 3-х лучших участников многоборья. katyuha_e Паскаль, Turbo Pascal, PascalABC.NET 2 05.04.2010 21:22