Программа компилируется, но при запуске и вводе первого значения вылетает ошибка. В чем проблема понять не могу. Код:
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
int main()
{
setlocale(0, "");
int n;
string s;
string temp;
int numb;
int mass[97];
for(int i = 0; i < 98; i++)
{
mass[i] = 0;
}
cin >> n;
for(int k = 0; k < n; k++)
{
getline(cin, s);
if(s.substr(s.length()-2, 1) == " ")
{
temp = s.substr(s.length()-1, 1);
numb = atoi(temp.c_str());
mass[numb - 1] = mass[numb - 1] + 1;
}
else
{
temp = s.substr(s.length()-1, 1);
numb = atoi(temp.c_str());
mass[numb - 1] = mass[numb - 1] + 1;
}
}
for(int u = 0; u < n; u++)
{
if(mass[u] > 0)
{
cout << "School №" << u << ": " << mass[u] << endl;
}
}
system("pause");
return 0;
}
не будем даже далеко ходить...
int mass[97];
Массив из 97 элементов.
for(int i = 0; i < 98; i++)
{
mass[i] = 0;
}
Записываются элементы 0, 1, 2, ..., 97 - итого 98 штук. Уже UB.
Далее - cin >> n;. В буфере остается '\n'.
getline(cin, s);
Считывается пустая строка.
if(s.substr(s.length()-2, 1) == " ")
И идет попытка откуда-то до ее начала подстроку получить...
Дальше даже не смотрел.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники