Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение, сверхдлинных чисел 
V
    Опции темы
rash
Дата 5.10.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.10.2006

Репутация: нет
Всего: нет



Цитата

rash, определись на каком те это языке надо 


Спасибо за содействие.
Реализацию сравнения пишу на C++. 

Цитата

, и какой формат входных и выходных данных и тогда организуем 


Пользователю предлагается ввести два сверхдлинных числа (длину строки он выбирает сам. Предположим, что строки одинаковые и равны,  пусть, 400 знаков), затем, должен последовать ответ, что-то вроде, "Из введённых чисел, число string1 больше string2". примерно так. Хотя, могут быть варианты.
Функция сравнения может возвращать, скажем, число string (которое больше) и разницу этого сравнения (на сколько больше).

ВВод строки, предполагаю, будет не более 500 символов.
PM MAIL   Вверх
Romikgy
Дата 5.10.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



в строках только целые числа правильно, если да то завтра выложу ф_цию сравнения, если кто быстрее не сделает, 
кса  строки это std::string или char * ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
rash
Дата 8.10.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.10.2006

Репутация: нет
Всего: нет



Совершено верно, строка (std::string) должна быть представлена целыми цифрами, 
Код

std::string digits = "129...478;

Вот, примерно так.
PM MAIL   Вверх
Romikgy
Дата 8.10.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Код

#include <iostream.h>
#include <string.h>
#include <ctype.h >
int cmp_str( string *s1, string *s2,long l)
{
 long i;
 char c1,c2;
 for (i=0;i<l;i++)
 if ((*s1)[i]!=(*s2)[i])
 {
  c1=(*s1)[i];
  c2=(*s2)[i];
  if (
  isdigit(c1)&&
  isdigit(c2)
  )
  {
  c1-='0';
  c2-='0';
  if (c1<c2)
  return -1;
  else
  return 1;
  }
  else
  return 0xff;
 }
 return 0;
}
int dif_cmp_str( string *s1, string *s2,long l1,long l2)
{
  long i;

  for (i=0;i<l1;i++)
  if (!isdigit((*s1)[i])) return 0xff;
  for (i=0;i<l2;i++)
  if (!isdigit((*s2)[i])) return 0xff;

  for (i=0;i<l1;i++)
  if ((*s1)[0]=='0')
   s1->erase(0,1);
   else break;
   for (i=0;i<l2;i++)
  if ((*s2)[0]=='0')
   s2->erase(0,1);
   else break;

   l1=s1->length();
   l2=s2->length();

   if (l1==l2)
   {
   return  cmp_str(s1,s2,l1);
   }
   else
   if (l1>l2) return 1;
  else
  return -1;

 return 0;
}
int compare_long_int(string *s1, string *s2)
{
 long l1,l2;
 int rt;
 l1=s1->length();
 l2=s2->length();
 if (l1==l2)
 rt=cmp_str(s1,s2,l1);
 else
 rt=dif_cmp_str(s1,s2,l1,l2);

return rt;
}
int main(int argc, char* argv[])
{
       string sx1,sx2;
       int cmp=0;
       sx1="20";
       sx2="00009";
       cmp=compare_long_int(&sx1,&sx2);
       cout<<sx1;
       switch (cmp)
       {
        case 0: {cout<<" = ";break;}
        case 1: {cout<<" > ";break;}
        case -1: {cout<<" < ";break;}
        case 0xff: {cout<<" Error ";break;}
       }
       cout<<sx2<<endl;
       system("PAUSE");
        return 0;
}


Это сообщение отредактировал(а) Romikgy - 8.10.2006, 17:49


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
rash
Дата 10.10.2006, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.10.2006

Репутация: нет
Всего: нет



За код сравнения длинных чисел большое спасибо.

есть только, два вопроса:

Назначение функций
Код

int  erase();


и 
Код

system("PAUSE");


PM MAIL   Вверх
Romikgy
Дата 10.10.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Цитата(rash @  10.10.2006,  22:09 Найти цитируемый пост)
int  erase();

удаляет начиная с позиции , н колво символов (у меня в коде убирает ни чего не значащие нули)

Цитата(rash @  10.10.2006,  22:09 Найти цитируемый пост)
system("PAUSE");

просто просит типа Press any key to continue....
некоторые заменяют getchar(); из библиотеки <conio.h>  (было в падло еще одну библу подключать)


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
rash
Дата 12.10.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.10.2006

Репутация: нет
Всего: нет



Благодарю за помощь в решении этого вопроса.
PM MAIL   Вверх
Diesel Draft
Дата 13.10.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



rash  откуда тьі?
просто такая задача недавно звучала у нас.


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
rash
Дата 14.10.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.10.2006

Репутация: нет
Всего: нет



если это так, то я пренебрёг поиском по сайту. Сорри.


Если вас не затруднит, укажите, пожалуйста, путь к этой задаче.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.