Всем привет, подскажите пожалуйста как исправить данную ошибку.. Это программа на сортировку методом пузырька.. код вроде верный, а ругается на неописанную константу вроде..
#include <stdio.h> #include <math.h> int main () { int size; printf("size="); scanf("%d",&size); { int i, j, bound=size-1, exchange; double row[size], temp; for (i=0; i<size; i++) row[i]=i/(2.0+i)-sin(i*i/(2.0+i)); for (i=0; i<size; i++) printf("%crow[%d]=%5.2f",i%4?'\t':'\n',i,row[i]); do { for (j=0, exchange=0; j < bound; j++) if (row[j]>row[j+1]) { temp=row[j]; row[j]=row[j+1]; row[j+1]=temp; exchange=j+1; } bound=exchange-1; } while (bound > 0); printf("\nResult:"); for (i=0; i<size; i++) printf("%crow[%d]=%5.2f",i%4?'\t':'\n',i,row[i]); } return 0; }
Michael_Rybak
19.12.2006 21:46
gcc компилит нормально.
volvo
19.12.2006 22:16
int size;
не может использоваться как размер массива, это переменная, а должна быть - константа, о чем тебе и говорит компилятор...
Michael_Rybak
19.12.2006 22:20
А вот кстати gnu нормально работает с неконстантными размерами. Очень был удивлен, обнаружив недавно.
volvo
19.12.2006 22:26
Это только GNU имеет такое расширение... Вообще-то, это отклонение от стандарта, поэтому я не пользуюсь этой вещью...