Как получить разницу между 2 массивами int в процентах - PullRequest
0 голосов
/ 14 декабря 2010

Математически мы можем решить это как Заданная сумма / Общая сумма * 100, чтобы получить разницу в процентах.Но мне нужно сравнить 2 целочисленных массива (в C # Win App) и получить процент от разницы.Как:

1 -----> -2
2 ----->  3
3 ----->  7
4 ----->  456
5 ----->  13

Эти два столбца являются 2 целочисленными массивами, и я должен получить разницу между ними.
Как я могу получить это?Математический ответ или алгоритм, все, что может быть использовано для решения проблемы.

Ответы [ 4 ]

1 голос
/ 14 декабря 2010

попробуйте

var i1 = Enumerable.Range(0, 10).ToArray();
var i2 = Enumerable.Range(20, 10).ToArray();
var result = i1.Select((n, i) => n * 100 / i2[i]);
0 голосов
/ 16 декабря 2010

Спасибо всем, кто ответил на вопрос!
Я думал о решении в эти дни, но я не уверен в результате. У меня есть сомнения по поводу моей работы, потому что я отлаживаю ее, но каждый раз с двумя другими массивами, которые содержат более 48 000 элементов. Мое решение до сих пор было похоже:

for(int i=0;i<arr1.length;i++)
{
  if(arr1[i] == arr2[i])
  count++;
}
double percentage = (float)count / (float)arr1.length * 100;
0 голосов
/ 14 декабря 2010

Как насчет использования LINQ:

        Int32[] array1 = new Int32[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        Int32[] array2 = new Int32[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 };

        Int32[] array3 = array1.Zip(array2, (a1, a2) => (a1 + a2) / 2).ToArray(); // Put whatever formula you want in there.

РЕДАКТИРОВАТЬ: Daniel и CD правильно.Код был исправлен.Спасибо, ребята.

0 голосов
/ 14 декабря 2010

Что вы подразумеваете под разницей?Вы можете получить массив различий:

int[] array = new int[arr1.Length];
for (i = 0; i < array.Length; i++)
{
  array[i] = array1[i] - array2[i];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...