Я работаю над кодом, который создает матричный класс с использованием вектора STL. Я хочу, чтобы пользовательский ввод (на консоли) выглядел так:
1 2 3
4 5 6
Или
1 2 3
4 5 6
7 8 9
Только это и ничего больше. т.е. код должен иметь возможность получать количество строк и столбцов из самого ввода (вместо того, чтобы явно запрашивать пользователя).
Может ли кто-нибудь направить меня?
2 ответа
Хорошо .. Я нашел способ это сделать. Спасибо, Андрей .. Вот как у меня получилось ..
#include<iostream>
#include<vector>
#include<string>
#include <sstream>
#include <iterator>
using namespace std;
int main() {
vector <vector <double> > v;
string s;
int count=0, ncol=0,check=0,nrow=0;
while(1) {
getline(cin,s);
if (s.length() == 0)
break;
for (int i=0; i<s.length(); i++)
if (s[i]==' ')
count++;
count++;
if (check==0) {
check++;
ncol=count;
}
if (count != ncol) {
cout << "ncol should be same in each row!" <<endl;
break;
}
v.resize(nrow+1);
istringstream buf(s);
istream_iterator<string> beg(buf), end;
vector<string> dummy(beg, end);
for (int i=0; i<ncol;i++)
v[nrow].push_back(stod(dummy[i]));
nrow++;
count=0;
}
//print the vector 'v' here
}
Я читал строки ввода по одной, пока строка не опустела.
#include<iostream>
#include<string>
using namespace std;
int main(){
string s,s1;
do{
getline (std::cin, s);
s1+=s;
}while(s.length()>0);
cout<<s1;
return 0;
}
Вместо добавления к s1 вам нужно будет написать простую функцию для разделения строки s на числа, сохранения количества столбцов на первом шаге, проверки изменения количества столбцов (выдачи ошибки), увеличения количества строк на каждом шаге и, конечно же, храните элементы матрицы в векторе. Как только вы закончите, вы можете построить матрицу
Похожие вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.