Поэтому я занимаюсь проблемами практики программирования ACM и всегда зацикливаюсь на получении информации от пользователя. Я использую C ++. Поэтому мне нужно прочитать ввод от пользователя, и это может быть несколько строк или одна строка, которую мы не знаем. Так что, если вход выглядит следующим образом:
2
1 2 3 4 5
2 2 2
Первая строка представляет количество игр, в которые играет пользователь, а следующие строки — это очки. Конец каждой игры завершается переводом строки. Мне нужно прочитать эти строки и сохранить их где-нибудь. Как мне это сделать? Я просматривал веб-сайты, и кажется, что большинство людей используют scanf, cin или getline, но я понятия не имею, что они делают.
Другой пример:
12 21
13 43
1 4
A C
0 0
Каждая строка будет содержать два числа, которые мне нужно добавить, разделенные пробелом. Когда я вижу два нуля, ввод сделан. Как мне прочитать их и проверить, 0 0?
Я попробовал что-то вроде:
string num1;
while (true) {
getline(cin,num1);
if (num1.empty()) {
break;
}
}
Но это не сработало. Пожалуйста, помогите, я думаю, я знаю, как решить проблему, но я не могу получить информацию от пользователя. Спасибо
Что ж, я узнал об этом, выполняя онлайн-задания, и так я поступаю, когда это необходимо.
Первый случай, я думаю, что вы должны объявить N случаев, поэтому у меня есть:
int N;
Затем нам нужно несколько чисел в каждом случае, скажем, 3. Итак, я сделаю это:
int score1[N];
int score2[N];
int score3[N];
Наконец, когда вам нужно принять ввод, вы делаете это:
cin >> N;
for(int i = 0; i < N; i++)
cin >> score1[i] >> score2[i] >> score3[i];
Я не уверен, что это лучший способ сделать это, но именно так я это делаю, когда решаю онлайн-задачи. Удачи!
Это довольно грубо и громоздко, но это должно дать вам кое-что для работы:
#include <vector>
#include <string>
#include <sstream>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
std::cout << "Enter two numbers (0 0 to exit): ";
string num1;
while (true) {
getline(cin, num1);
string buf;
stringstream ss(num1);
vector<string> tokens; // Create vector to hold the two numbers (separately)
// Split the two numbers (by the spaces)
while (ss >> buf)
tokens.push_back(buf);
cout << "Adding " + tokens[0] << " and " << tokens[1] << endl;
int sum = atoi(tokens[0].c_str()) + atoi(tokens[1].c_str());
cout << 0 + sum;
if (num1.empty()) {
break;
}
}
}