|
|
|
перенос из консоли в Builder
|
|||
|---|---|---|---|
|
#18+
У меня возникла следующая проблема. Есть программка, написанная в консоли. Программа делает следующее: вводится порядок матрицы, после чего последовательно заполняются элементы матрицы. В результате получаются 3 матрицы А, U, L. Матрица А – это просто отображение вводимых элементов матрицы. Матрицы U, L строятся на основе матрицы А по опред. алгоритму. Мне необходимо перенести эту прогу из консоли в обычное приложение Buildera. В Buldere создаю динамически Edit’ы, в которые вводятся элементы матрицы. Создаю динамически Label’ы, в которых отображаются элементы матрицы А. Но никак не могу сделать, чтобы считались матрицы U и L. Пишу следующее в обработчике на кнопку для матриц U, L: int EditsCount = StrToInt(Edit2->Text) ; int EditsCount2 = EditsCount * EditsCount ; for(i=0;i<EditsCount2;i++) { TLabel ** Labels2 = new TLabel * [EditsCount2]; Labels2 = new TLabel(this); Labels2->Parent = this; Labels2->Left =100; Labels2->Caption =Edits->Text ; Labels2->Top = (i*50)+250; } for (i=0;i< EditsCount2;i++) { for (j=0;j< EditsCount2;j++) { L[0]=A[0]; U[0]=A[0]/L[0][0]; double sum=0; for (int k=0;k<i;k++) { sum+=U[k]*L[j][k]; } L[j]=A[j]-sum; if(i>j) { U[j]=0; } else { sum=0; for (int k=0;k<i;k++) { sum+=U[k][j]*L[k]; } U[j]=(A[j]-sum)/L; } } } for (i=0;i< EditsCount2;i++) { for (j=0;j< EditsCount2;j++) { L[0][j+1]=0; } } for (i=0;i< EditsCount2;i++) { for (j=0;j< EditsCount2;j++) { if(i>j) { U[j]=0; } } } Вместо матрицы А в тексте у меня стоит StrToFloat (Edits->Text). При нажатии на кнопку вылазит исключение Деление на ноль, но в консоли то работает. Помогите пожалуйста. Программа в консоли приложена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 18:36:56 |
|
||
|
перенос из консоли в Builder
|
|||
|---|---|---|---|
|
#18+
worinСоздаю динамически Label’ыМожет тебе больше подойдет какой-нибудь грид ? PS: Используй тэг SRC Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 07:16:26 |
|
||
|
перенос из консоли в Builder
|
|||
|---|---|---|---|
|
#18+
разбираться с твоим кодом совсем нет желания. Согласен с предыдущим пожеланием использовать гриды. Числа можно вытащить из любой строки. см нелр AnsiString или чисто сишные функции что-то типа strchr из <string.h> там разберешься. Идея простая "в лоб". Ищи первую цифру. После этого первую не цифру и так сдвигайся. А зачем в Buildere создавать видимые компоненты динамически??? От скуки? вот тебе кусок, который писал на чистом с++ /********************************* ** return pointer to end of digit *********************/ char *pstAtof( double &i, char *st) { if( ( st = strpbrk( st, "-.0123456789")) == NULL) return NULL; if( (*st == '-') || (*st == '.')) if( !isdigit( *(st+1)) ) return NULL; i = atof( st); while( (isdigit( *st)) || (*st == '-')||(*st == '.') ) st++; return st; } /********************************* ** return pointer to end of digit *********************/ char *pstAtoi( int &i, char *st) { if( ( st = strpbrk( st, "-0123456789")) == NULL) return NULL; if( *st == '-') if( !isdigit( *(st+1)) ) return NULL; i = atoi( st); while( (isdigit( *st)) || (*st == '-') ) st++; return st; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 12:02:24 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2028001]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 490ms |

| 0 / 0 |
