2010-10-29 8 views
1

J'ai deux grands nombres (type int) qui sont stockés dans un tableau avec une taille d'au moins 1000, et je veux comparer ces deux nombres pour obtenir des informations dont l'un est plus grand que l'autre. Comment puis-je faire ceci?comparaison de tableau pour la multiplication et soustraction

En fait, je vais faire deux choses

  1. Soustraire ces deux
  2. multiplier ces deux (je suis en train d'étudier dans ce sujet, en effet, et je n'ai pas trouvé un algorithme efficace, ne hésitez pas à aider moi)
+3

pouvez-vous expliquer comment les avez-vous stockés avec l'exemple –

+0

Si vous avez conçu le format de stockage pour em, alors vous devez sûrement savoir comment les comparer. – ruslik

+1

est ce devoir? –

Répondre

2

Supposons que vous ayez un tableau entier

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

tout d'abord vous triez votre tableau

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; 
       } 
     } 
    } 

Maintenant, vous trouvez que le plus grand nombre est marques [0] et la deuxième grande est marques [1]

+0

L'OP demande autre chose entièrement. – MAK

2

Cela dépendra du codage de votre grand nnumber dans le tableau!

2
  1. Comparer les longueurs: Le plus grand tableau représente le plus grand nombre.
  2. Si des tailles égales: comparaison numérique jusqu'à non identique.
2

Assurez-vous que vos tableaux ne contiennent aucun zéros. Maintenant, s'ils n'ont pas la même taille, le plus grand tableau doit contenir une plus grande valeur (pour la même raison 1000 est plus grand que 10). Sinon, comparez-les simplement comme vous le feriez pour comparer des chaînes (c'est-à-dire en commençant par le chiffre le plus significatif).

0
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. 
    } 
}