Возможно неправильно что-то сделал с вектором структур, первый раз с таким работаю.`Помогите пожалуйста, если знаете в чём дело)
#include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<vector>
using namespace std;
struct money
{
int Rubles, Kopecks;
};
int main()
{
int n, k,max1, max2, min1, min2;
setlocale(LC_ALL, "Russian");
cout << "Программа выводит максимальную и минимальную денежную суммы" << endl;
cout << "Введите количество денежных сумм" << endl;
cin >> n;
vector <money> a;
a.reserve(n);
for (int i = 0; i < n; i++)
{
cout << "Введите количество рублей " << i + 1 << "-ой денежной суммы" << endl;
cin >> a[i].Rubles;
cout << "Введите количество копеек " << i + 1 << "-ой денежной суммы" << endl;
cin >> a[i].Kopecks;
if (a[i].Kopecks >= 100)
{
k = a[i].Kopecks / 100;
a[i].Kopecks -= k * 100;
a[i].Rubles += k;
}
}
max1=a[0].Rubles;
max2=a[0].Kopecks;
for (int i = 1; i < n; i++)
{
if (a[i].Rubles > max1)
{
max1 = a[i].Rubles;
max2 = a[i].Kopecks;
}
if (a[i].Rubles == max1)
if (a[i].Kopecks > max2)
max2 = a[i].Kopecks;
}
min1 = a[0].Rubles;
min2 = a[0].Kopecks;
for (int i = 1; i < n; i++)
{
if (a[i].Rubles < min1)
{
min1 = a[i].Rubles;
min2 = a[i].Kopecks;
}
if (a[i].Rubles == min1)
if (a[i].Kopecks < min2)
min2 = a[i].Kopecks;
}
cout << "Максимальная сумма: " << max1 << "рублей " << max2 << "копеек" << endl;
cout << "Минимальная сумма: " << min1 << "рублей " << max2 << "копеек" << endl;
_getch();
return 0;
}
vector::reserve
выделяет память на всякий случай, но доступ не разрешает. Нужно использовать vector::resize
Лучше напишите то же самое по принципу ООП
#include <iostream>
#include <vector>
using namespace std;
struct money
{
int Rubles, Kopecks;
friend std::istream& // чтобы вводить сразу обьект
operator >>(std::istream& is, money& m)
{
is >> m.Rubles >> m.Kopecks;
int k = m.Kopecks / 100;
if ( k ) {
m.Kopecks -= k * 100;
m.Rubles += k;
}
return is;
}
bool operator <(const money& m) //для сортировки
{
if (Rubles == m.Rubles)
return Kopecks < m.Kopecks;
return Rubles < m.Rubles;
}
};
int main()
{
int n{};
cin >> n;
vector<money> a(n); // сразу создаем вектор размера n
for (int i = 0; i < n; ++i) {
cout << "Введите количество рублей и копеек "
<< i + 1 << "-ой денежной суммы" << endl;
cin >> a[i];
}
sort(a.begin(), a.end());
money max = a[n - 1], min = a[0];
cout << "Максимальная сумма: " << max.Rubles << " рублей "
<< max.Kopecks << " копеек" << endl;
cout << "Минимальная сумма: " << min.Rubles << "рублей "
<< min.Kopecks << "копеек" << endl;
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Улитка ползет по вертикальному шесту высотой H метров, поднимаясь за день на A метров, а за ночь спускаясь на B метровНа какой день улитка доползет...
Есть ли что-то "опасное" в том, что два потока будут одновременно инкрементировать одну переменную? Я имею ввиду, может ли произойти такое,...
Когда-то это казалось недостижимымНо пришло время, и даже PVS стал на это ругаться (при сборке 32-битности, само собой - а необходимость в этом...