Если я понимаю оригинальный вопрос, вопрос на самом деле интересный. Перефразируя вопрос (к тому, что я считаю эквивалентным вопросом): «Как вы делаете вычисленное на Фортране goto в C?»
Сначала нам нужно узнать, что такое вычисляемый переход: Вот ссылка на одно объяснение: http://h21007.www2.hp.com/portal/download/files/unprot/fortran/docs/lrm/lrm0124.htm.
Примером вычисленного GOTO является:
GO TO (12,24,36), INDEX
Где 12, 24 и 36 - номера выписок. (Метки языка C могут служить эквивалентом, но это не единственное, что может быть эквивалентом.)
А где INDEX - переменная, но может быть результатом формулы.
Вот один способ (но не единственный) сделать то же самое в C:
int SITU(int J, int K)
{
int raw_value = (J * 5) + K;
int index = (raw_value % 5) - 1;
return index;
}
int main(void)
{
int J = 5, K= 2;
// fortran computed goto statement: GO TO (320,330,340,350,360), SITU(J,K) + 1
switch (SITU(J,K) + 1)
{
case 0: // 320
// code statement 320 goes here
printf("Statement 320");
break;
case 1: // 330
// code statement 330 goes here
printf("Statement 330");
break;
case 2: // 340
// code statement 340 goes here
printf("Statement 340");
break;
case 3: // 350
// code statement 350 goes here
printf("Statement 350");
break;
case 4: // 360
// code statement 360 goes here
printf("Statement 360");
break;
}
printf("\nPress Enter\n");
getchar();
return 0;
}
В этом конкретном примере мы видим, что вам не нужно C gotos для реализации вычисляемого goto на FORTRAN!