私は行列の入力を可能にし、行列の逆数とそれに続くベクトルの入力を計算するコードを記述しようとしています。しかし、行列の値が入力されると、一時停止してベクトルエントリを待つコードを得ることができません。それは、デフォルトでゼロを持つメインの残りの部分を実行するだけです。私はベクトルを埋めるためにコンソールが入力を待つように入力や何かをリセットすることは可能ですか?行列とベクトルを読み取る入力を一時停止するC++
#include <iostream>
#include "MatrixInverse.h"
#include "ReadMatrixRow.h"
#include "GlobalMinVar.h"
using std::cin;
using std::cout;
using std::endl;
int main(){
int i;
int const n_size=3;
double **SigmaInv, **Sigma,*mu,*MinVarWeight;
Sigma = (double **)malloc(n_size * sizeof(double *));
Sigma[0] = (double *)malloc(n_size * n_size * sizeof(double));
for(i = 1; i < n_size; i++)
{ Sigma[i] = Sigma[0] + i * n_size;}
cout<<"Enter the entries of the covariance matrix row by row,"<<endl;
cout<<"breaking each row with a non-numeric character:"<<endl;
//PAUSES HERE FOR MATRIX INPUT
for (i=0;i<n_size;i++)
{
ReadMatrixRow(cin,Sigma,i);
}
mu=(double *)malloc(n_size * sizeof(double *));
cout<<"Input the expected return vector values:"<<endl;
//WANT A PAUSE HERE FOR FURTHER INPUT THAT IS SEPARATE
ReadVector(cin,mu);
for (i=0;i<n_size;i++)
{
cout<<mu[i]<<endl;
}
機能は、ユーザがgetchは(キーの使用を押すまで一時停止する
istream& ReadMatrixRow(istream& in, double **s,int i)
{
if (in)
{
int j=0;
double x;
while (in>>x)
{
s[i][j]=x;
++j;
}
in.clear();
in.ignore(1);
}
return in;
}
istream& ReadVector(istream& in, double *s)
{
if (in)
{
int i=0;
double x;
while (in>>x)
{
s[i]=x;
++i;
}
in.clear();
}
return in;
}
これはOPでは機能しません。 – AndyG
'getch()'は使わないでください。 conio.hは標準ではありません – Martin