#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
//YOUR_CODE
string word;
cout << "enter a word: ";
getline(cin, word);
int middle = word.length();
middle = middle/2;
if(middle % 2 == 0)
{
middle = word.length();
middle = (middle/2)+1;
floor (middle);
}
int last = word.length();
cout << word[0] << word.at(middle) << word.at(last);
}
Я не уверен, почему getline не работает. Проверка через книгу, которую я использую, и отладчик не помог. Кто-нибудь знает, что с ним не так? В отладчике он говорит значение: <не доступно>. Любая помощь приветствуется.
Нет проблем с назначением word
. Проблема заключается в word.at(last)
. Строковые позиции выполняются от 0
до length-1
(как и массивы). Поскольку last
является word.length()
вы пытаетесь получить доступ к символу вне этого диапазона. Пытаться:
last = word.length()-1;
floor(middle)
, когда вы его нигде не назначаете?getvalue
в вашей программе?