0

プログラムの実行中に ZZ ベクトルのサイズを変更したいと思います。作り方、方法はありますか?メソッド .setLenght() または .DosetLenght() を見つけましたが、プログラム/グラムがこれらのメソッドでベクトルを変更することを拒否しているため、初期化ステップのみのようです..

どうもありがとう。

 Vec<ZZ> v1,v2;
 v1.SetLength(8);
 v2.SetLength(8);
 ZZ velkeCislo,odmocnina,factor,test;
 long i = 0;
 cin >> velkeCislo;
 odmocnina = SqrRoot(velkeCislo);
 cout << "new v1 dlzka " << v1.length() << endl;
 for(i=0;i<v1.length();i++) {
 v1(i) = odmocnina;
 odmocnina++;
 cout << "Number1 " << v1(i) << endl;
 }
 for(i=0;i<v1.length();i++){
   v2(i)=(v1(i)*v1(i))-velkeCislo;
  cout << "Number2 " << v2(i) << endl;
 }
 bool found=false;
 int tp = v1.length();
 cout << "old v1 " << v1.length() << endl;
 v1.SetLength(tp+1); //causes error
  cout << "new v1 " << v1.length() << endl;
4

1 に答える 1

1

コードの問題もここで説明されています。メソッドv1(i)を使用して配列にアクセスしていますが、これは 1 ベースのインデックス システムであるため、プログラムで範囲外のアクセスが発生します。(ゼロベース)に置き換えるv1(i)と、プログラムが機能するはずです。v1[i]

于 2013-12-01T16:46:35.807 に答える