Для обработки текстового массива в С++, можно использовать стандартную библиотеку языка, а именно класс istringstream, который позволяет считывать данные из строки, разбивая ее на отдельные элементы.
Для решения задачи подсчета среднего балла студента по каждому предмету, можно использовать следующий код:
Здесь мы сначала инициализируем входную строку input со списком предметов и оценками студентов. Затем мы используем istringstream для чтения строк из input и сохраняем их в вектор lines. Далее мы инициализируем вектор avg для хранения средних баллов по каждому предмету.
Затем мы обрабатываем каждую строку из lines, используя еще один объект istringstream. Сначала мы считываем название предмета, а затем считываем оценки студентов, суммируя их и подсчитывая их количество. Затем мы вычисляем средний балл и сохраняем его в векторе avg. В конце мы выводим средний балл для каждого предмета.
Код выше предполагает, что все оценки находятся в строке через пробел и каждая строка соответствует одному предмету. Если формат данных отличается, необходимо скорректировать код.
Answers & Comments
Для обработки текстового массива в С++, можно использовать стандартную библиотеку языка, а именно класс istringstream, который позволяет считывать данные из строки, разбивая ее на отдельные элементы.
Для решения задачи подсчета среднего балла студента по каждому предмету, можно использовать следующий код:
-------------------------------------------------------------------------
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
string input = "Математика 5 4 5 3 5\nФизика 5 3 5 4\nПрограммирование 5 4 5 5";
vector<string> lines;
istringstream stream(input);
string line;
// Считываем строки из входной строки
while (getline(stream, line)) {
lines.push_back(line);
}
// Инициализируем вектор средних баллов
vector<double> avg(lines.size(), 0.0);
// Обрабатываем каждую строку
for (int i = 0; i < lines.size(); i++) {
istringstream lineStream(lines[i]);
string subject;
double sum = 0.0;
int count = 0;
// Считываем название предмета
lineStream >> subject;
// Считываем оценки и суммируем их
while (!lineStream.eof()) {
int grade;
lineStream >> grade;
sum += grade;
count++;
}
// Считаем средний балл и сохраняем его в векторе
avg[i] = sum / count;
cout << "Средний балл по предмету " << subject << ": " << avg[i] << endl;
}
return 0;
}
---------------------------------------------------------------------------------------------------------
Здесь мы сначала инициализируем входную строку input со списком предметов и оценками студентов. Затем мы используем istringstream для чтения строк из input и сохраняем их в вектор lines. Далее мы инициализируем вектор avg для хранения средних баллов по каждому предмету.
Затем мы обрабатываем каждую строку из lines, используя еще один объект istringstream. Сначала мы считываем название предмета, а затем считываем оценки студентов, суммируя их и подсчитывая их количество. Затем мы вычисляем средний балл и сохраняем его в векторе avg. В конце мы выводим средний балл для каждого предмета.
Код выше предполагает, что все оценки находятся в строке через пробел и каждая строка соответствует одному предмету. Если формат данных отличается, необходимо скорректировать код.
Итого, мы получили ответ:
Средний балл по предмету Математика: 4.4
Средний балл по предмету физика: 4.25
Средний балл по предмету Программирование: 4.75