опашка - естествени числа
Да се състави програма, чрез която се въвеждат N броя естествени числа от интервала [1..101].
Броят на въведените числа не се знае предварително - определя се от потребителя.
Чрез използване на структура от тип опашка да се изведе въведената редица числа като:
а) първо се извеждат всички нечетни числа;
б) след тях се извеждат всички четни числа;
в) извеждането на числата съответства на реда на въвеждането им.
Пример: 11, 12, 15, 17, 19, 21, 23, 9, 10, 16, 18, 20
Изход: 11, 15, 17, 19, 21, 23, 9, 12, 10, 16, 18, 20
Решение
#include <iostream>
#include <ctime>
#include <queue>
using namespace std;
queue<int> m_queue1,m_queue2,m_queue3;
void pylni_chetni( int chislo)
{ m_queue1.push(chislo);//postawq element w opashka
}//void pylni_chetni w opashka
void pylni_nechetni( int chislo)
{ m_queue2.push(chislo);//postawq element w opashka
}//void pylni_nechetni w opashka
void obedini_queue()
{ int chislo;
while (!m_queue1.empty()) //samo chetni
{chislo=m_queue1.front();
m_queue1.pop();
m_queue3.push(chislo);
}
while (!m_queue2.empty())
{chislo=m_queue2.front();
m_queue2.pop();
m_queue3.push(chislo);
}
}//void obedini_queue()
int main()
{ int chislo,N,i;
time_t t;//polzwa tekushoto wreme
srand( time(&t));//inicializira generator na suchajni chisla
cout<<"Da se systawi programa, chrez koqto se generirat N broq sluchajni \n";
cout<<"estestweni chisla ot interwala [1..101].Programata da izwede\n";
cout<<"redica, w koqto pyrwo se izwevdat wsichki chetni chisla, a\n";
cout<<"sled towa wsichki nechetni chisla. Redyt na izwevdaneto\n";
cout<<"syotwetstwa na reda na wywevdaneto. Da se realizira opashka.\n";
cout<<"Broqt na chislata ne se znae predwaritelno. Toj se opredelq\n";
cout<<"ot potrebitelq w procesa na wywevdaneto im\n";
cout<<"Primer: 11, 12, 15, 17, 19, 21, 23, 9, 10, 16, 18, 20 \n";
cout<<"Izhod: 11, 15, 17, 19, 21, 23, 9, 12, 10, 16, 18, 20 \n";
cout<<"Wywedete broj chisla: ";cin>>N;
cout<<"Generiram psewdosluchajni chisla:\n";
for (i=0;i<N;i++)
{ chislo=1 + rand()%100;
cout<<chislo<<"; ";
if (chislo%2) pylni_nechetni( chislo);
else pylni_chetni( chislo);
}
cout<<endl;
obedini_queue();
cout<<"Izwevdam ot opashkata obedinenieto na dwete redici: \n";
while (!m_queue3.empty())
{ chislo=m_queue3.front();//elementyt ot na nachaloto na opashkata
cout<<chislo <<"; ";//izwevda sydyrvanieto na nachaloto na opashkata
m_queue3.pop();//maha element ot na nachaloto na opashkata
}
cout<<endl;
system("pause");
return 0;
}