VB6 требуется некоторая помощь с циклированием

#c #vb6

#c #vb6

Вопрос:

Я пытаюсь преобразовать исходный код с C в 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 ? Спасибо.

Ответ №1:

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

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

Комментарии:

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

Ответ №2:

Даст ли версия 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 Строка принадлежит вне цикла.