Нахождение медианы (двойной) в массиве C ++? - PullRequest
0 голосов
/ 05 ноября 2018

Этот сайт - мое последнее средство. Я работаю над заданием для моего вступления в CS класс. Я должен написать функцию, которая принимает два параметра (массив int и размер массива). Функция должна возвращать медиану массива. Массив был отсортирован с помощью встроенной функции сортировки из примеров модуля этой недели. Вот мой код (пока):

#include<iostream>
#include<algorithm>
using std::cout;
using std::endl;

//Function prototype
double findMedian(int array[], int size);

//Main function
int main()
{
    int array[] = {23, 5, -10, 0, 0, 321, 1, 2, 99, 30};
    int size = 10;

    //Function to sort array smallest to largest
    std::sort(array, array + size);
    for(int i = 0; i < size; i++)
       std::cout << array[i] << ' ' ;

    //Call to findMedian function
    double median = findMedian(array, size);

    //Output median of the array
    std::cout << "\nMedian is: " << median << std::endl;

    return 0;
}

//Function to calculate median of sorted array
double findMedian(int array[], int size)
{
    double median = 0.0;

    if(size % 2 == 0) //If array size is even
    {
        median = (array[(size-1)/2] + array[size/2])/2.0;
    }
    else //If array size is odd
    {
    median = array[size/2];
    }
    return median;
}

Я отправляю задание через Mimir, и теперь оно провалило первые три представления со следующим сообщением:

INPUT OF THE TEST CASE 
#include <cmath>
const double EPS = 0.00001;

int array[] = {1,5,7,4,2,6,3,9,8};
double result = findMedian(array, 9);
ASSERT_TRUE(fabs(result-5.0) < EPS);


YOUR CODE'S OUTPUT 
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from MimirTest
[ RUN      ] MimirTest.cppUnitTest
tests.cpp:24: Failure
Value of: fabs(result-5.0) < EPS
  Actual: false
Expected: true
[  FAILED  ] MimirTest.cppUnitTest (0 ms)
[----------] 1 test from MimirTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] MimirTest.cppUnitTest

1 FAILED TEST

Я не совсем уверен, где ошибка в моем коде, которая является причиной этого теста. Любые указатели будут высоко оценены! Это вступительный класс, поэтому мне разрешено использовать только те методы, которые были рассмотрены до сих пор (Gaddis Intro to Object-Oriented Programming главы 1-8). СПАСИБО!

1 Ответ

0 голосов
/ 05 ноября 2018

Ваша функция findMedian предполагает, что массив уже отсортирован. Но массив в тестовом случае, который не проходит, не является.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...