Перевод программы, Qbasic, Dephi |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Перевод программы, Qbasic, Dephi |
klem4 |
19.02.2006 20:11
Сообщение
#1
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Приходится мне тут последнее время переводить некоторые вычислительые прораммы (написанные не мной) с бейсика на делфи, и вот в одной возникла заминка, не могу найти ошибку, где-то в алгоритме ... Переписал чисто на паскале, если кто найдет ошибку, буду премного благодарен :)
basic : Код CLS REM ***************************** REM REM ОБЩЕЕ СОПРОТИВЛЕНИЕ ИЗ REM ДВУХ ПАРАЛЛЕЛЬНЫХ РЕЗИСТОРОВ REM С ЗАДАННЫМ ДОПУСКОМ REM REM ***************************** DIM A(50) FOR I = 1 TO 25: READ A(I): A(I + 24) = A(I) * 10 NEXT DATA 10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47,51,54,62,68,75,82,91,100 A$ = " " LOCATE 2: PRINT "ПАРАЛЛЕЛЬНЫЙ РЕЗИСТОР"; TAB(2); : PRINT "С ЗАДАННЫМ ДОПУСКОМ": LOCATE 4: PRINT A$: 160 LOCATE 5: PRINT "ЗНАЧЕНИЕ СОПРОТИВЛЕНИЯ"; TAB(5); : PRINT "/ ГРАНИЦЫ: 10-100 /": PRINT LOCATE 7: INPUT "R = "; X IF X < 10 OR X > 100 THEN LOCATE 6: PRINT A$: GOTO 160 PRINT : INPUT "ДОПУСК (%) - "; T LOCATE 10: PRINT "ЗНАЧЕНИЕ : "; X; TAB(23); : PRINT "ДОПУСК :"; T; : PRINT "%" T1 = 1 - T / 200: TH = 1 + T / 200: X1 = X * T1: XH = X * TH FOR I = 2 TO 25: IF X >= A(I - 1) AND X <= A(I) THEN Y = I IF X > 50 THEN M = I + 24: GOTO 260 M = I 260 IF X * 2 > A(M - 1) AND X * 2 <= A(M) THEN Z = M IF Y = I AND Z = M THEN 290 NEXT 290 PRINT : PRINT " R1 R2 (MIN) ОБЩЕЕ (MAX)" PRINT "========================================" FOR M = Y TO Z: FOR N = Z TO 49: XN = A(N) * A(M) / (A(N) + A(M)) IF XN > XH OR XN < X1 THEN 360 PRINT A(N); TAB(11); : PRINT A(M); TAB(19); : PRINT INT(XN * T1 * 100 + .5) / 100; TAB(27); : PRINT INT(XN * 100 + .5) / 100; TAB(34); : PRINT INT(XN * TH * 100 + .5) / 100 DD = DD + 1 IF DD = 10 THEN LOCATE 25: PRINT A$; TAB(2); : PRINT "ДЛЯ ПРОДОЛЖЕНИЯ - НАЖМИТЕ ВВОД"; : INPUT R$: DD = 0 360 NEXT N, M PRINT : PRINT "НЕОБХОДИМЫЕ ГРАНИЦЫ : "; INT(X * (100 - T) + .5) / 100; " - "; INT(X * (100 + T)) / 100 и вот алгоритм я перевел : uses crt; Сообщение отредактировано: volvo - 2.11.2006 20:32 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Текстовая версия | 1.10.2024 17:00 |