Вводится фамилии, имена и набранные баллы участников конкурса . кол-во участников n. вывести победителей с двумя лучшими результатами .
#include
using namespace std;
#include
int main (){
stack m1,m2
stack w1,w2
int=n,b;( b-балл)
string fi; (fi-фамилия имя)
cin>>n;
while (n--){
cin>>fi;
cin>>b;
Другие языки программирования и технологии
дописать программу с++. пожалуйста.
int main()
{
stack m1,m2;
stack w1,w2;
int n,b;
string fi;
cin >> n;
while(n--)
{
getline(cin,fi);
getline(cin,fi);
cin >> b;
while(m1.size()&& b < m1.top())
{
m2.push(m1.top());
m1.pop();
w2.push(w1.top());
w1.pop();
}
w1.push(fi);
m1.push(b);
while(m2.size())
{
m1.push(m2.top());
w1.push(w2.top());
m2.pop();
w2.pop();
}
}
if(m1.size()>1)
{
cout << w1.top()<< endl;
cout << m1.top()<< endl;
w1.pop();
m1.pop();
cout << w1.top()<< endl;
cout << m1.top()<< endl;
}
return 0;
}
{
stack m1,m2;
stack w1,w2;
int n,b;
string fi;
cin >> n;
while(n--)
{
getline(cin,fi);
getline(cin,fi);
cin >> b;
while(m1.size()&& b < m1.top())
{
m2.push(m1.top());
m1.pop();
w2.push(w1.top());
w1.pop();
}
w1.push(fi);
m1.push(b);
while(m2.size())
{
m1.push(m2.top());
w1.push(w2.top());
m2.pop();
w2.pop();
}
}
if(m1.size()>1)
{
cout << w1.top()<< endl;
cout << m1.top()<< endl;
w1.pop();
m1.pop();
cout << w1.top()<< endl;
cout << m1.top()<< endl;
}
return 0;
}
Примерно так
struct myStruct{
string family;
string name;
int result;
}
bool _compare(myStruct &a, myStruct &b) { return a.result > b.result; }
vector < myStyruct > data;
...
sort(data.begin(), data.end(), _compare);
struct myStruct{
string family;
string name;
int result;
}
bool _compare(myStruct &a, myStruct &b) { return a.result > b.result; }
vector < myStyruct > data;
...
sort(data.begin(), data.end(), _compare);
Эмм. Вы уверены что тут именно stack нужен, а не н-р vector и не по отдельности string и int, а хотя-бы struct из фамилии и кол-ва баллов?
Хотя по такому заданию - можно решить вообще без массивов и т. п.
Прототип =)
#include < iostream >
using namespace std;
void add(int* top, int value) {
if (value > top[1]) top[1] = value;
if (top[1] > top[0]) swap(top[1], top[0]);
}
int main() {
int top[2] = {0,0};
add(top, 10);
add(top, 3);
add(top, 20);
add(top, 8);
add(top, 1);
cout << top[0] << endl << top[1] << endl;
}
Хотя по такому заданию - можно решить вообще без массивов и т. п.
Прототип =)
#include < iostream >
using namespace std;
void add(int* top, int value) {
if (value > top[1]) top[1] = value;
if (top[1] > top[0]) swap(top[1], top[0]);
}
int main() {
int top[2] = {0,0};
add(top, 10);
add(top, 3);
add(top, 20);
add(top, 8);
add(top, 1);
cout << top[0] << endl << top[1] << endl;
}
Олег Пиатровский
уверена, что именно стэк, так как учитель настаивал именно на нем
Лёша Макаревич
Ну можно сортировку вставками провести, раз итераторы остсутствуют, два стека не спроста даны видимо...
#include <iostream>
#include <stack>
#include <limits>
#include <windows.h>
using namespace std;
int main() {
stack <int> m1;
stack <string> w1;
int n, b;
string di;
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
cout << "Введите количество участников: ";
cin >> n;
while(n--) {
cout << "Введите фамилию очередного участника: ";
cin >> di;
w1.push(di);
cout << "Введите балл участника: ";
cin >>b;
m1.push(b);
}
int max1 = m1.top();
string people1 = w1.top();
m1.pop();
w1.pop();
int max2 = m1.top();
string people2 = w1.top();
if(max1<max2) { //swap
int temp = max1;
string temp_s = people1;
max1 = max2;
people1 = people2;
max2 = temp;
people2 = temp_s;
}
while(!m1.empty()) {
if(max1<m1.top()) {
max2 = max1;
people2 = people1;
max1 = m1.top();
people1 = w1.top();
} else if(max2<m1.top()) {
max2 = m1.top();
people2 = w1.top();
}
m1.pop();
w1.pop();
}
cout << endl << endl;
cout << "Первый участник набравший больше всего балов: " << people1 << " - " << max1 <<endl;
cout << "Второй участник несильно отстающий от первого: " << people2 << " - " << max2 <<endl;
system("pause");
return 0;
}
#include <stack>
#include <limits>
#include <windows.h>
using namespace std;
int main() {
stack <int> m1;
stack <string> w1;
int n, b;
string di;
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
cout << "Введите количество участников: ";
cin >> n;
while(n--) {
cout << "Введите фамилию очередного участника: ";
cin >> di;
w1.push(di);
cout << "Введите балл участника: ";
cin >>b;
m1.push(b);
}
int max1 = m1.top();
string people1 = w1.top();
m1.pop();
w1.pop();
int max2 = m1.top();
string people2 = w1.top();
if(max1<max2) { //swap
int temp = max1;
string temp_s = people1;
max1 = max2;
people1 = people2;
max2 = temp;
people2 = temp_s;
}
while(!m1.empty()) {
if(max1<m1.top()) {
max2 = max1;
people2 = people1;
max1 = m1.top();
people1 = w1.top();
} else if(max2<m1.top()) {
max2 = m1.top();
people2 = w1.top();
}
m1.pop();
w1.pop();
}
cout << endl << endl;
cout << "Первый участник набравший больше всего балов: " << people1 << " - " << max1 <<endl;
cout << "Второй участник несильно отстающий от первого: " << people2 << " - " << max2 <<endl;
system("pause");
return 0;
}
Похожие вопросы
- Помогите дописать программу на C
- Помогите дописать программу!!
- Помогите дописать программу. Первое сделал полностью, а второе только среднее значение нашел
- Напишите программу, паскаль, пожалуйста
- Написала программу. поморите, пожалуйста исправить. Я в Си++ новичок.
- Кто может помочь?Нужны комментарии к каждой строчке программы...Помогите пожалуйста! оч нужно!!!
- СИ++ не успеваю сделать программу.Помогите пожалуйста!
- помогите переделать код программы с++ пожалуйста
- C++ не работает программа посмотрите пожалуйста))
- С++ Помогите дописать код? Как дописать сумму???