2014-09-28 4 views
-3

Я работаю над программой анализа классов для своей домашней работы. Массив может содержать 6 классов, и если будет введен другой класс, он вернет false. Но у меня проблемы с добавлением в массив. У меня есть два класса, потому что задание задает два класса. Это заданный класс, мне просто нужно его реализовать.Статический список, связанный список

class StaticList 
{ 
public: 
StaticList() 
{ 
List[MAXCELLS] = 0; 
Counter = 0; 
} 
bool Add(ListType) 
{ 
ListType a =0; 
Counter = 0; 
while (Counter < MAXCELLS) 
{ 
    Counter++; 
    List[Counter] = a; 
} 
return true; 
} 
private: 
ListType List[MAXCELLS]; 
int Counter; 
}; 

Это мой другой класс я сделал

class Stats 
{ 
public: 
bool NewGrade(ListType) 
{ 
    StaticList tmp; 
    ListType a = 0; 
    //if grade fits in array return true 
    tmp.Add(a); 
    if (!tmp.Add(a)) 
    { 
     return true; 
    } 
    else 
     return false; 
} 
}; 
+0

что ListType? –

+0

В чем вопрос? –

+0

ListType - это float typedef, который был указан. Я прошу прощения за то, что не добавил этого. –

ответ

0

Прежде всего, значение, чтобы добавить аргумент функции, она не должна быть локальной переменной.
Во-вторых, Counter отслеживает, сколько предметов вы сохранили - установка 0 в Add не имеет смысла.
В-третьих, ваша петля будет заполнить массив с новым значением.
В-четвертых, вы всегда возвращаете true, указывая на успех.
В-пятых, List[MAXCELLS] = 0 пишет за пределами границ массива, делая программу неопределенной. Вы можете просто удалить эту строку.

То, что вы хотите сделать, это

  • Если есть место для другого элемента, увеличивает Counter установите Counter: го элемента в значение аргумента, и вернуть true
  • В противном случае, возвращение false.

В коде:

bool Add(ListType a) 
{ 
    if (Counter < MAXCELLS - 1) 
    { 
     Counter++; 
     List[Counter] = a; 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
Смежные вопросы