Я работаю над кодом, который создает матричный класс с использованием вектора STL. Я хочу, чтобы пользовательский ввод (на консоли) выглядел так:

1 2 3
4 5 6

Или

1 2 3
4 5 6
7 8 9

Только это и ничего больше. т.е. код должен иметь возможность получать количество строк и столбцов из самого ввода (вместо того, чтобы явно запрашивать пользователя).

Может ли кто-нибудь направить меня?

-3
Atish Dixit 29 Апр 2016 в 09:46

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
}
0
Atish Dixit 10 Май 2016 в 09:10

Я читал строки ввода по одной, пока строка не опустела.

#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 на числа, сохранения количества столбцов на первом шаге, проверки изменения количества столбцов (выдачи ошибки), увеличения количества строк на каждом шаге и, конечно же, храните элементы матрицы в векторе. Как только вы закончите, вы можете построить матрицу

0
Andrei 29 Апр 2016 в 07:07