Другие языки программирования и технологии

дописать программу с++. пожалуйста.

Вводится фамилии, имена и набранные баллы участников конкурса . кол-во участников 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;
}
Александр Беллер
Александр Беллер
8 452
Лучший ответ
Примерно так
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);
Сер Мот
Сер Мот
50 828
Эмм. Вы уверены что тут именно 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;
}
KK
Kostas Karanikolas
84 764
Олег Пиатровский уверена, что именно стэк, так как учитель настаивал именно на нем
Лёша Макаревич Ну можно сортировку вставками провести, раз итераторы остсутствуют, два стека не спроста даны видимо...
#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;
}
N.
Nickelback .
15 388