2010-05-19 2 views
-3

Я пытаюсь преобразовать источник из C++ в VB6:VB6 Требуется помощь с зацикливание

C++:

static double mdArray[3][3]; 
static double mdArray2[3][3]; 

for (i = 0; i < 3; i++) 
for (j = 0; j < 3; j++) 
{ 
    double sum = 0; 

    for(k = 0; k < 3; k++) 
    sum = sum + mdArray[k][i] * mdArray[k][k]; 

    mdArray2[i][j] = sum 
} 

VB6:

dim mdArray(0 to 2, 0 to 2) as integer 
dim mdArray2(0 to 2, 0 to 2) as integer 

for i = 0 to 2 
for j = 0 to 2 

dim a as double 
sum = 0 

    for k = 0 to 2 
    sum = sum + mdArray(k,i) * mdArray(k,j) 

    mdArray2(i,j) = sum 
    Next 

Next 
Next 

Будет ли версия VB6 дают одинаковые результат как версия C++? Благодарю.

ответ

3

Будет ли версия vb6 получить тот же результат, что и версия на C++?

Вы попробовали?

Ваши массивы объявлены как double в C++, но Integer в VB6. Кроме того, коды выглядят довольно идентичны, за исключением внутреннего цикла (с использованием надлежащего отступа предотвратил бы эту ошибку легко!):

for k = 0 to 2 
    sum = sum + mdArray(k,i) * mdArray(k,j) 
Next 
mdArray2(i,j) = sum 

dArray2(i,j) = sum линия принадлежит вне петли.

5

Вы даже потрудились попробуйте это? Вот ошибки я мог заметить:

  1. Вы объявлять массивы с неправильным типом данных
  2. Вы объявляющего a вместо sum по какой-то причине
  3. Вы mdArray(k, j) вместо mdArray(k, k)
  4. Ваш внутренний Next заявление должно быть до mdArray2(i,j) = sum, а не после него.
+0

+1 И это легко попробовать. Версия Visual C++ express бесплатна. Предположительно, у вас есть VB6 (иначе в упражнении не так много смысла) – MarkJ

Смежные вопросы