lundi 16 mars 2020

I have completed my code and it works on the terminal, but compiler I need to use to submit returns many errors and a failed output

This is my code. I don't understand why it won't compile and give me the output I want... For a sample input of 7, 8, 9, 10, the output would remove the maximum number (10) and return 7, 8 & 9. But the submitting system says it failed and only returned 1?? Please help!

main.cpp:

#include <iostream>
#include <vector>
#include <limits>
#include "Set.h"
using namespace std;

int main()
{
    Set obj;

    obj.addElement(1);
    obj.addElement(10);
    obj.addElement(5);
    obj.addElement(3);
    obj.addElement(7);

    for(int i = 0; i < obj.vector.size(); i++)
    {
        //cout << obj.vector[i] << endl;
    }

    obj.removeElement(obj.returnMaximum());

    for(int i = 0; i < obj.vector.size(); i++)
    {
        cout << obj.vector[i] << endl;
    }


    obj.returnMinimum();

    for(int i = 0; i < obj.vector.size(); i++)
    {
        cout << obj.vector[i] << endl;
    } 

    obj.returnAverage();

    for(int i = 0; i < obj.vector.size(); i++)
    {
        cout << obj.returnAverage() << endl;
    } 

    return 0;
}

Set.h:

#include <iostream>
#include <vector>
#include <limits>

class Set {

    public:
    Set();
    void addElement(int n);
    int removeElement(int n);
    double returnAverage();
    int returnMaximum();
    int returnMinimum();

    std::vector<int> vector;

};

Set.cpp

#include <iostream>
#include <vector>
#include <limits>
#include "Set.h"


Set::Set()
{

    vector = std::vector<int>();

}

void Set::addElement(int n)
{

    for(int i = 0; i < vector.size(); i++)
    {
        if(vector[i] == n)
        {
            return;
        }
    }

    vector.push_back(n);

}

int Set::removeElement(int n)
{

    for(int i = 0; i < vector.size(); i++)
    {
        if(vector[i] == n)
        {               
            vector.erase(vector.begin()+i);
        }
    }

    return n;

}

double Set::returnAverage()
{

    double average;
    double sum;

    if(vector.size() == 0)
    {
        return -1; 
    }

    for(int i = 0; i < vector.size(); i++)
    {

        average = average + vector[i];
        sum = average/vector.size();

    }
    return sum;
}

int Set::returnMaximum()
{

    int max = 0;

    if(vector.size() == 0)
    {
        return -1; 
    }

    for(int i = 0; i < vector.size(); i++)
    {
        if(max < vector[i])
        {
            max = vector[i];
        }
    }

    return max;

}

int Set::returnMinimum()
{
    int min = std::numeric_limits<int>::max();

    if(vector.size() == 0)
    {
        return -1; 
    }

    for(int i = 0; i < vector.size(); i++)
    {
        if(min > vector[i])
        {
            min = vector[i];
        }
    }

    return min;
}

These are the errors...

main.cpp: In function ‘int main()’:
main.cpp:17:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < obj.vector.size(); i++)
                                     ^
main.cpp:24:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < obj.vector.size(); i++)
                                     ^
main.cpp:32:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < obj.vector.size(); i++)
                                     ^
main.cpp:39:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < obj.vector.size(); i++)
                                     ^
Set.cpp: In member function ‘void Set::addElement(int)’:
Set.cpp:17:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vector.size(); i++)
                                 ^
Set.cpp: In member function ‘int Set::removeElement(int)’:
Set.cpp:32:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vector.size(); i++)
                                 ^
Set.cpp: In member function ‘double Set::returnAverage()’:
Set.cpp:55:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vector.size(); i++)
                                 ^
Set.cpp: In member function ‘int Set::returnMaximum()’:
Set.cpp:75:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vector.size(); i++)
                                 ^
Set.cpp: In member function ‘int Set::returnMinimum()’:
Set.cpp:96:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vector.size(); i++)
                                 ^
Set.cpp: In member function ‘double Set::returnAverage()’:
Set.cpp:48:9: warning: ‘sum’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  double sum;
         ^
Set.cpp:58:32: warning: ‘average’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   average = average + vector[i];
                                ^

*** Case  1  ***
Input:  7 9 10 5
Expecting:  7 9 5
Obtained :  1
Wrong

*** Case  2  ***
Input:  1 2 2 3 3
Expecting:  1.5 2 1
Obtained :  1
Wrong

*** Case  3  ***
Input:  1
Expecting:  -1 -1 -1
Obtained :  1
Wrong

*** Case  4  ***
Case hidden
Wrong

*** Case  5  ***
Case hidden
Wrong

Result:  0 / 5

Aucun commentaire:

Enregistrer un commentaire