Я исправил класс Vector.пожалуйста, смотрите код ниже.Вне моей основной функции у меня есть функция ниже.Мне не разрешено изменять эту функцию.
private static bool CheckIntSequence<T>(T[] certificate, Vector<T> vector)
{
if (certificate.Length != vector.Count) return false;
int counter = 0;
foreach (T value in vector)
{
if (!value.Equals(certificate[counter])) return false;
counter++;
}
return true;
}
в основной функции я создал объект векторного класса и добавил элементы в следующей последовательности (2, 6, 8, 5, 5, 1, 8,5, 3, 5, 7, 1, 4, 9) с использованием метода vector.Add (2).Теперь, когда я вызываю функцию CheckIntSequence через исключение, потому что длина вектора равна 15.
Console.WriteLine("\nTest D: Check the content of the Vector<int> by traversing it via 'foreach' statement ");
if (!CheckIntSequence(new int[] { 2, 6, 8, 5, 5, 1, 8, 5, 3, 5, 7, 1, 4, 9 }, vector)) throw new Exception("The 'foreach' statement produces an incorrect sequence of integers");
Console.WriteLine(" :: SUCCESS");
, как я уже упоминал, я могу вносить изменения только в векторный класс.Я пробовал несколько вещей, чтобы добиться успеха в CheckIntSequence, но не повезло.Может кто-то, пожалуйста, посмотрите и помогите мне, что я делаю неправильно в моем векторном классе.
public class Vector<T> : IEnumerable<T>
{
private const int DEFAULT_CAPACITY = 10;
private T[] data;
public int Count = 0;
public int Capacity
{ get { return data.Length; } }
public Vector(int capacity)
{ data = new T[capacity]; }
public Vector() : this(DEFAULT_CAPACITY) { }
public T this[int index]
{ get
{
if (index >= Count || index < 0) throw new IndexOutOfRangeException();
return data[index];
}
set
{
if (index >= Count || index < 0) throw new IndexOutOfRangeException();
data[index] = value;
}
}
public int IndexOf(T element)
{
for (var i = 0; i < Count; i++)
{
if (data[i].Equals(element)) return i;
}
return -1;
}
private void ExtendData(int extraCapacity)
{
T[] newData = new T[Capacity + extraCapacity];
for (int i = 0; i < Count; i++) newData[i] = data[i];
data = newData;
}
public void Add(T element)
{
if (Count == Capacity) ExtendData(DEFAULT_CAPACITY);
data[Count++] = element;
}
public IEnumerator<T> GetEnumerator()
{
return new VectorEnumerator(data);
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public class VectorEnumerator : IEnumerator<T>
{
private T[] _data;
private int curIndex;
private T current;
public VectorEnumerator(T[] list)
{
_data = list;
curIndex = -1;
current = default(T);
}
public bool MoveNext()
{
if (++curIndex >= _data.Length)
{ return false; }
else
{ current = _data[curIndex]; }
return true;
}
public void Reset() { curIndex = -1; }
void IDisposable.Dispose() { }
public T Current {get { return current; }}
object IEnumerator.Current {get { return Current; }}
}
}