-1
私はクラスキューを作成し、最小値と最大値を見つける必要があります。最大値は正しいが、最小値はそうではない。正確な結果を得るために何番の値を 頭と尾の値を変更する必要がありますか?私はゼロのためにそれらを変更する場合は、最初の要素となり、両方の最大値と最小 queue自分のクラスキューの最小値を見つける
class myQueue
{
private:
int size, head, tail, *data;
public:
myQueue(int size = 1) :
size(size)
{
data = new int[size];
head = -1;
tail = -1;
}
~myQueue() //
{
delete[] data;
}
void myEnqueue(int el)
{
data[tail] = el;
tail = (tail + 1) % size;
}
int maxEl()
{
int *temp = &data[head];
int max = *temp;
while (*temp != data[tail])
{
temp++;
max = (max > *temp) ? max : *temp;
}
return max;
}
int minEl()
{
int *temp = &data[head];
int min = *temp;
while (*temp != data[tail])
{
temp++;
min = (min < *temp) ? min : *temp;
}
return min;
}
};
int main()
{
myQueue q(5);
int n = 0, el;
while (n < 5)
{
cin >> el;
q.myEnqueue(el);
n++;
}
cout << "The arithmetic mean of the elements = " << q.srArifm(5) << "\n";
cout << "Maximum queue element = " << q.maxEl() << "\n";
cout << "Minimum queue element =" << q.minEl() << "\n";
system("pause");
return 0;
}
正しい結果を得るためには尾が必要ですか?もしそれらを0に変更すると、最初の要素は最大値と最小値の両方になります – choko
@chokoは修正済みで編集されました – mpiatek
@choko最新の編集を確認します。このバージョンでは、キューがいっぱいになったときに要素を置き換えます – mpiatek