сравнение массивов для умножения и вычитания - PullRequest
1 голос
/ 29 октября 2010

У меня есть два больших числа (типа int), которые хранятся в массиве размером не менее 1000, и я хочу сравнить эти два числа, чтобы получить информацию, какое из них больше другого. Как я могу это сделать?

На самом деле я сделаю две вещи

  1. вычтите эти два
  2. умножьте эти два (я действительно учусь в этой теме, и я не нашел эффективного алгоритма; не стесняйтесь мне помочь)

Ответы [ 5 ]

2 голосов
/ 29 октября 2010

Предположим, у вас есть целочисленный массив

int Marks[1000]={22,32,12,..............};

Сначала вы отсортируете свой массив

int g,r,c;
for ( r=0; r <=999; r++)
   {
     for ( g=r+1;g<=1000;g++)
        {
            if ( Marks[r]  < Marks[g] )
               {
                   c=Marks[r];                // these 3 statements swap values
                   Marks[r] =Marks[g];          // in the 2 cells being compared  
                   Marks[g] = c;
                }
        }   
   } 

Теперь вы обнаружите, что наибольшее число - это Marks [0], а второе большое - это Marks.[1]

2 голосов
/ 29 октября 2010
  1. Сравните длины: чем больше массив, тем больше число.
  2. При равных размерах: поразрядное сравнение до тех пор, пока оно не будет идентичным.
2 голосов
/ 29 октября 2010

Убедитесь, что у ваших массивов нет ведущих нулей. Теперь, если они не одинакового размера, больший массив должен содержать большее значение (по той же причине 1000 больше 10). В противном случае, просто сравните их, как если бы вы сравнивали строки (т. Е. Начиная с самой значимой цифры).

2 голосов
/ 29 октября 2010

Это будет зависеть от кодировки вашего большого номера в массиве!

0 голосов
/ 29 октября 2010
int iArray[1000] = { /* ... */ };

int Subtract( int idx1, int idx2 )
{
    return iArray[idx1] - iArray[idx2];
}

// Return data type size is increased to prevent overflow.
long Multiply( int idx1, int idx2 )
{
    return (long)iArray[idx1] * (long)iArray[idx2];
}

int Compare( int idx1, int idx2 )
{
    if ( iArray[idx1] > iArray[idx2] )
    {
        return 1; // Value at index 1 is greater than value at index 2.
    }
    else if ( iArray[idx1] < iArray[idx2] )
    {
        return -1; // Value at index 1 is less than value at index 2.
    }
    else
    {
        return 0; // Values at both indexes are equal.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...