Создание очереди из 5 структур
Создать структуру, которая хранит имя человека и его номер телефона. Создать очередь из 5-ти структур и вывести результат. Помним, что в очереди кто первым записался, тот первым и обслуживается. Пытался сделать так, не приняли.
#include <iostream>
#include <string>
using namespace std;
struct perk
{
string name;
long double phone;
};
int main()
{
const int s = 5;
perk per[5];
for (int i = 0; i < 5; i++)
{
cout << "What's ur name? " << "U r " << i + 1 << " pers ";
cin >> per[i].name;
cout << '\n';
cout << "Welcome, " << per[i].name << '\n';
cout << '\n';
cout << per[i].name << ", What's ur phone? ";
cin >> per[i].phone;
cout << '\n';
cout << "Thx for giving ur num, " << per[i].name << " (ur num is " << per[i].phone << ')' << '\n';
cout << '\n';
}
}
Прошу не кидаться помидорами, только начал учить c++ и мало, что знаю. Буду признателен, если поможете)
Ответы (1 шт):
Автор решения: acvel
→ Ссылка
#include <iostream>
using namespace std;
template <typename Smth>
class queue {
template <typename Smth>
struct node {
node<Smth>* next;
Smth data;
node(Smth data) {
this->data = data;
next = NULL;
}
};
node<Smth>* head;
node<Smth>* tail;
int size;
public:
queue() {
head = tail = NULL;
size = 0;
}
~queue() {
while (head) {
tail = head->next;
delete head;
head = tail;
}
}
void push(Smth data) {
node<Smth>* temp = new node<Smth>(data);
if (size == 0) {
head = tail = temp;
}
else {
tail->next = temp;
tail = temp;
}
size++;
}
void pop() {
node<Smth>* temp = head;
head = head->next;
delete temp;
size--;
}
Smth front() {
return head->data;
}
Smth back() {
return tail->data;
}
bool empty() {
return (size == 0) ? true : false;
}
};
struct perk
{
string name;
long double phone;
};
int main() {
queue<perk*> q;
for (int i = 0; i < 5; i++) {
perk* per = new perk;
cout << "What's ur name? " << "U r " << i + 1 << " pers ";
cin >> per->name;
cout << '\n';
cout << "Welcome, " << per->name << '\n';
cout << '\n';
cout << per->name << ", What's ur phone? ";
cin >> per->phone;
cout << '\n';
cout << "Thx for giving ur num, " << per->name << " (ur num is " << per->phone << ')' << '\n';
cout << '\n';
q.push(per);
}
for (int i = 0; i < 5; i++) {
perk* p = q.front();
q.pop();
delete p;
}
}