0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 5
|
|
1 | |
Разборка в кода программы. И в реализации поставленных задач06.05.2018, 14:28. Показов 912. Ответов 14
Метки нет (Все метки)
Всем привет! И сразу большое спасибо, что хотя бы посмотрели... И так к делу!
В институте дали задание, не учебное, а по большой просьбе! Суть задания такова, есть код программ (их всего 3-4 шт), которые работали в windows 98, их надо перебрать, объеденить и переписать на более современный язык программирования с более расширенным вычислительным функционалом. В этот код нужно будет внедрить сложные интегральные расчеты, векторные расчеты,матричные расчеты, тригонометрические расчеты, вывод таблицы данных с полученными координатами и прочим, а так же попросили с большой такой просьбой что бы была возможность вывода и построения 3-х мерного графика! Там был еще один нюанс.... Написать код программы так что бы, по некоторым заданным и зависимым от этих коэффициентов данных (A,B,C,D), функции вида f(x)=A*x^3+B*x^2+C*x+D, подбирала наименьшее значение конечной формулы, которая зависит от координат полученных от этой функции. У программы должен быть свой интерфейс и конечно вывод на печать полученных данных. Обязательная работа на современных компьютерах по ОС Mac OS, Windows 10. Скажите пожалуйста, какой язык программирования будет удовлетворять всем этим требованиям? Где наиболее просто и быстро это можно реализовать? Я уже частично знаком с языком Delphi, но что то сам не могу до конца разобраться в коде изначальной программы, которую написал преподаватель где-то в начале 90-х..... Если скажите, что иди и спроси у препода, то уже побывал! Он в маразме ( не преподает уже лет 5) и не фига сказать не может, но попытка не пытка.... Вот код первой программы изначальной! QBasic/QuickBASIC 10 CLS 20 PRINT " ПРОГРАММА ДЛЯ РАСЧЕТА РЕАКЦИЙ," 30 PRINT " ДЕЙСТВУЮЩИХ НА ПЛУЖНЫЙ РАБОЧИЙ ОРГАН" 40 I=0:J=0:T=0:R=0:PI=3.14159 50 PRINT " ВВЕДИТЕ ИСХОДНЫЕ ДАННЫЕ:" 60 PRINT " НОРМАЛЬНОЕ ДАВЛЕНИЕ НА ЛЕМЕХЕ,Po= ";:INPUT P 70 PRINT " ГЛУБИНА КАНАЛА,Hк= ,м";:INPUT H 80 PRINT " ШИРИНА КАНАЛА ПО ДНУ, Вд= ,м";:INPUT B 90 PRINT " КОЭФФИЦИЕНТ ЗАЛОЖЕНИЯ ОТКОСОВ,m= ";:INPUT M 100 PRINT " УГОЛ РЕЗАНИЯ ЛЕМЕХА,дельта л = ,град.";:INPUT D1 110 PRINT " УГОЛ ЗАХВАТА ЛЕМЕХА,альфа л = ,град.";:INPUT A 120 PRINT " КОЭФФИЦИЕНТЫ УРАВНЕНИЯ КСО:" 130 PRINT " ао= ";:INPUT N 140 PRINT " а1= ";:INPUT F 150 PRINT " а2= ";:INPUT E 160 PRINT " КОЭФФИЦИЕНТЫ УРАВНЕНИЯ НАПРАВЛЯЮЩЕЙ КРИВОЙ:" 170 PRINT " A= ";:NPUT U 180 PRINT " B= ";:INPUT V 190 PRINT " C= ";:INPUT O 200 PRINT " D= ";:INPUT S 210 D=D1 220 H=H*2 230 FOR G=0 TO L STEP .005 240 Q=(1-G*G/H/H):W=(B/2+M*G) 250 X=Q*W*(SIN(D*PI/180)+.4*COS(D*PI/180)) 260 Y1=Q*W*COS(D*PI/180)/SIN(A*PI/180) 270 Y2=.4*Q*W*SIN(D*PI/180)/SIN(A*PI/180) 280 Y=Y1-Y2 290 I=I+X*.005:J=J+X*G*.005:T=T+Y*.005 300 R=R+Y*(W/2/TAN(A*PI/180)+G/TAN(D*PI/180)/SIN(A*PI/180))*.005 310 NEXT G 320 FOR G=L TO H STEP .05 330 GOSUB 630 340 Q=(1-G*G/H/H):W=(B/2+M*G) 350 X=Q*W*(SIN(D*PI/180)+.4*COS(D*PI/180)) 360 Y=Q*W*(COS(D*PI/180)-.4*SIN(D*PI/180))/SIN(A*PI/180) 370 IF Y=<0 THEN 420 380 I=I+X*.05:J=J+X*G*.05:T=T+Y*.05 390 Z=U*G^3+V*G*G+O*G+S 400 R=R+Y*(W/2/TAN(A*PI/180)+Z)*.05 410 NEXT G 420 PRINT " РЕЗУЛЬТАТЫ РАСЧЕТА ДЛЯ HK=";H/2 430 PRINT 440 PRINT " RG1=";2*P*I,"RB1=";2*P*T 450 PRINT " Z1=";J/I,"X1=";R/T 460 PRINT:PRINT 470 G1=G:I=0:J=0:T=0:R=0 480 FOR G=G1 TO H STEP .05 490 GOSUB 630 500 Q=(1-G*G/H/H):W=(B/2+M*G) 510 X=Q*W*(SIN(D*PI/180)+.4*COS(D*PI/180)) 520 IF G>H THEN Q=0:GOTO 550 530 Y3=Q*W*COS(D*PI/180)/SIN(A*PI/180) 540 Y4=.4*Q*W*SIN(D*PI/180)/SIN(A*PI/180) 550 Y=Y3-Y4*(H/G-1) 560 I=I+X*.05:J=J+X*G*.05:T=T+Y*.05 570 Z=U*G^3+V*G^2+O*G+S 580 R=R+Y*(W/2/TAN(A*PI/180)+Z)*.05 590 NEXT G 600 PRINT "RG2=";2*P*I,"RB2=";2*P*T 610 PRINT "Z2=";J/I,"X2=";R/T 620 END 630 A=N+F*D+E*D*D 640 TNK=3*U*G*G+2*V*G+O 650 K=90-(ATN(TNK*SIN(A*PI/180)))*180/PI 660 D=K 670 RETURN Заранее скажу, что меня все уверяют, что эта программа РАБОТАЛА! У меня глубокое ощущение, что там есть ошибки и чего то не хватает.... 1. В это строке 230 FOR G=0 TO L STEP .005 Я понимаю что начинается цикл от G=0 до L с шагом 0.005!!!! Но блин! Где эта L в коде? должна ли она быть? или что то я не понимаю? Я понимаю что начнется цикл от G=0 с шагом 0.005 до какой-то L, а смысл? Что получается в итоге? Число? 2. Вот еще подобная строка... 320 FOR G=L TO H STEP .05 точно так же я понимаю что цикл от G=L до H с шагом 0.05., Опять что на выходе? Число L + n-й шаг с которым мы достигли H? 3. такая строка 490 GOSUB 630 Я чем-то понимаю что расчет переходит на 630 строку, но я не понимаю при каком условии! Не судите строго! Я понимаю, что надо больше изучать матчасть и прочее, но я сейчас зашел в тупик! НА первом шаге расшифровки этих строк кода.... И не понимаю как и в каком языке моно потом будет все это реализовать.... Заранее всем большое спасибо!
0
|
06.05.2018, 14:28 | |
Ответы с готовыми решениями:
14
О возможностях реализации поставленных задач Написать код решения поставленных задач C++ vs C#. Что лучше использовать для поставленных задач? Разборка кода |
06.05.2018, 14:52 | 2 |
Если нужен современный диалект бейсика, то подойдет PureBasic, REALbasic и некоторые другие.
Это вызов подпрограммы находящейся начиная со строки 630. Возврат обратно по достижению RETURN.
1
|
06.05.2018, 17:51 | 3 |
Во FreeBasic можно легко скомпилировать в режиме совместимости QBasic.
Исправить 2 ошибки: стр. 170 NPUT U, должно быть Input U стр. 370 IF Y=<0 THEN 420, должно быть IF Y <= 0 Then 420 Ну и да, вместо переменной L нужно подставить реальное число. Тут уж исходя из контекста, надо знать предмет. Я пробовал, всё работает под WIN7. Вроде как есть версия FB под ОС Mac OS, неофициальная.
1
|
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 5
|
||||||
06.05.2018, 18:25 [ТС] | 4 | |||||
Подойдет Любой современный математически ориентированный язык программирования, который может решать сложные математические функции.
вот... Это не просто так. На выходе должен получится скажем .exe файл программы, который будут запускать студенты и программа будет просто по исходным данным выдавать ответ, полученные коэффициенты, а так же строить два двух мерных графика и желательно один общий трехмерный! Может как вариант еще график по точкам. Т.е. условно можно записать вот так?
На это я как бы ответил.... FreeBasic актуальный в настоящее время язык? У него большой математический функционал? из него можно сделать отдельный .exe и допустим запустит сразу на другом компьютере. Просто в интернете точного ответа нету.... Пишут есть fortran, но как бы устарел, но так же есть его версия 2010 года и точно ни кто не пишет что и как... И главное! Всем спасибо!
0
|
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 5
|
|
06.05.2018, 19:01 [ТС] | 7 |
Невероятный, в смысле безграничный (очень большой) или невероятный в смысле, как бы есть, но не большой.
Очень интересно от куда такой вывод! Добавлено через 39 секунд Большое спасибо! Домой приеду посмотрю!
0
|
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 5
|
||||||
06.05.2018, 21:03 [ТС] | 9 | |||||
А ты можешь посоветовать какие нибудь учебники?
А какие еще альтернативные языки есть? И на каком "уровне" по отношению к Ним Freebasic... Насчет этого, заключение интересное, но к сожалению не верное. Порылся в файлах, которые скинули с этим кодом и там были черновики этой программки и вот код...
Еще раз Спасибки! Добавлено через 2 минуты А как и в чем Ты этот код перекомпилировал?
0
|
06.05.2018, 22:10 | 10 |
Pro_grammer, наверное пошутил. Математические возможности примерно такие же как у других ЯП общего применения. Т. е. это не математически ориентированный ЯП.
Теперь нужно еще добавить
0
|
07.05.2018, 03:59 | 11 |
А ну да. Знаете сколько людей до вас тут были с точно такими же "не учебными" заданиями 80-х?
Т.е. сам автор в маразме и не может разгрести этот свой говнокод, а вы типа разгребёте. Ну да, ну да... Вы не поняли ситуёвины, это задача узкой прикладной области со своими заморочками, мат.частью и кучей всего. Вы бросаете людям ужасный, нерабочий говнокод - "макаронник", не говорите как оно сделано, даже банально не можете убрать метки и в человеческий современный процедурный вид привести. И хотите чтобы кто-то что-то дописывал. Тут никто не педрит как даже запустить вашу прогу, потому что на старте она просит 100500 коэфф-тов(на основе которых она что-то там высчитывает), а они для человека, который не в курсе данной предметной области - это как апельсины для свиней. Прикольно, а что будете делать если завтра ещё и Android понадобится. Не проще дописать это гавно на QuickBasic, обернуть в какой-нибудь DOSBox и забыть об этом навсегда? Возможно она работала, до тех пор, пока кто-то в неё не влез и не попортил. LPRINT
0
|
07.05.2018, 08:30 | 12 |
Ну вам виднее, я в этих "ПЛУЖНЫЙ РАБОЧИЙ ОРГАН" ни чего не понимаю!
Напомнило старый анекдот: Но по уму для этой задачи, учитывая потребности в кроссплатформенности, а так же итеративности, я бы переписал на офисном Excel. Там этих таблиц и графиков завались, хоть какие строй, и уверен, что у любого студента Офис правдами и неправдами, но в компьютер установлен, а значит любой сможет запустить этот файл.
0
|
0 / 0 / 0
Регистрация: 06.05.2018
Сообщений: 5
|
|
10.05.2018, 14:08 [ТС] | 13 |
А какие языки, тогда математические ориентированы ?
А есть ли языки, которые в принципе могут решать математические задачи, например интеграл такой, какой он есть, не разбивая его на прямоугольники, ведь при решении вторым способом теряется точность, что не маловажно для этих вычислений.
0
|
10.05.2018, 19:02 | 14 |
Это как? Волшебной палочкой что ли? В любой математической программе есть алгоритм, по которому рассчитывается что либо. Не нравится точность прямоугольников решаем методом трапеций или Симпсона, вроде один из самых точных.
Легко рассчитывается в таблицах Excel.
0
|
10.05.2018, 20:21 | 15 |
Есть специализированные математические системы: Matlab и Mathcad.
Ну и говорят старейший язык Фортран хвастается приличной мат. базой.
0
|
10.05.2018, 20:21 | |
10.05.2018, 20:21 | |
Помогаю со студенческими работами здесь
15
Разборка кода Разборка кода c# Разборка кода Разборка кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |