Написал вот такой код:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string figure;
int N;
cin >> N;
int count = 0;
for(int i = 0; i < N; i++)
{
getline(cin, figure);
if(figure[0] == 'T') count+= 4;
if(figure[0] == 'I') count += 20;
if(figure[0] == 'D') count += 12;
if(figure[0] == 'O') count += 8;
if(figure[0] == 'C') count += 6;
}
cout << count;
}
При i = 0 getline не работает, ввод запрашивает на 1 раз меньше чем требуется. В чём проблема работы getline() ?
После
cin >> N;
в буфере ввода остаются <CR><LF>
которые считываются первым вызовом
getline(cin, figure);
интерперетируясь как пустая строка. Выход пропустить эти символы, вызвав после
cin >> N;
cin.ignore();
Ну а зачем считывать строку, если вам нужен только ее первый символ? Лучше считывать только один символ, а всю остальную строку инорировать. Вот аналогичный код:
char c;
int N, count = 0;
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> c;
switch (c)
{
case 'T': count += 4; break;
case 'I': count += 20; break;
case 'D': count += 12; break;
case 'O': count += 8; break;
case 'C': count += 6; break;
}
// игнорируем всю остальную строку
cin.ignore(std::numeric_limits<streamsize>::max(), '\n');
}
cout << count;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Недавно начал изучать С++Выполняю упражнение на перевод температур по шкалам
Всем привет, возникла ошибкаНа сколько я понимаю возникает исключение при попытке доступа к члену типа, значение которого равно null