@imotuxa

Что не так, в чем ошибка?

Подскажите, почему выдает ошибку "Вы неправильно обращаетесь к вектору по индексу".
Вот сама задача, мой код и ошибка:
Улучшите предыдущую программу. Добавьте в неё следующие возможности:
Нумерацию месяцев ведите не с нуля, а как в жизни: май — пятый месяц, декабрь — двенадцатый.
Добавьте обработку ошибок. Если пользователь ввёл номер несуществующего месяца, выведите текст Incorrect month.
Вместо сиротливого числа выведите полноценную фразу, например There are 31 days in January.
Для реализации последнего пункта заведите второй вектор типа vector, в который нужно сложить названия месяцев на английском:
January
February
March
April
May
June
July
August
September
October
November
December
Формат входных данных
Одно целое число — календарный номер месяца.
Формат выходных данных
Фраза: There are {количество дней} days in {название месяца с заглавной буквы}. Точку в конце фразы не выводите.
Либо фраза: Incorrect month, если введён некорректный номер месяца.
В конце вывода, как всегда, endl.
Ограничения
Решите задачу с использованием двух векторов и никак иначе.
Пример
Ввод: 5. Вывод: There are 31 days in May.
Ввод: 2. Вывод: There are 28 days in February.
Ввод: 0. Вывод: Incorrect month.
Ввод: 100. Вывод: Incorrect month.
Точка не входит в вывод.

Код:
#include <iostream>
#include <vector>
#include <string>

using namespace std;
int main() {
		vector<int> month_lengths = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int i;
	  cin >> i;// считайте номер месяца
    if (i > 12 || i < 1){
        cout << "Incorrect month" << endl;
    }
        else if (i >= 1 || i <= 12){
            i = i -1;
            vector<string> month_names = {"January", "February", "March", "April", "May", "Lune", "Luly", "August", "September", "October", "November", "December"};
		cout << "There are " << month_lengths[i] << " days in " << month_names[i] << endl;// и выведите количество дней в нём
}
}


Ошибка:
Задача прошла 13/15 проверок
Возможные проблемы:
- Вы неправильно обращаетесь к вектору по индексу.
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 2
@mayton2019
Bigdata Engineer
В С++ массивы нумеруются от нуля до (n - 1).
Ответ написан
@vimcomes
объявите вектор до if
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы