forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Перевод кода Pascal abc в код MidletPascal (http://forum.boolean.name/showthread.php?t=11827)

odd 03.02.2010 15:55

Ответ: Перевод кода Pascal abc в код MidletPascal
 
Элементарно, Ватсон.

PHP код:

Program x2;
var
   
abcdreal;
   
id_1id_2id_3iinteger;
   
cmd_okclickedcommand;


Procedure wait;
begin
    cmd_ok
:=CreateCommand('OK'CM_OK1);
    
AddCommand(cmd_ok);
    
Repaint;   
    
repeat 
      clicked 
:= GetClickedCommand;
      
Delay(20);
    
until clicked cmd_ok;
end;


begin
    ShowForm
;
    
id_1:= FormAddTextField('Ввести коэффициент a'''20TF_NUMERIC);
    
id_2:= FormAddTextField('Ввести коэффициент b'''20TF_NUMERIC);
    
id_3:= FormAddTextField('Ввести коэффициент c'''20TF_NUMERIC);
    
wait;
    
a:=StringToReal(FormGetText(id_1), 10);
    
b:=StringToReal(FormGetText(id_2), 10);
    
c:=StringToReal(FormGetText(id_3), 10);
    
d:=b*b-4*a*c;
    
ClearForm;
    
i:=FormAddString('D = ' d);
    if 
0 then
    begin
        i
:=FormAddString('D > 0 Два корня:');
        
i:=FormAddString('Меньший= '+(-b-sqrt(d))/2*a);
        
i:=FormAddString('Больший= '+(-b+sqrt(d))/2*a);
    
end;
    if 
0 then i:=FormAddString('D = 0 Один корень: x='+( -b/2*a));
    if 
0 then i:=FormAddString('D < 0 Нет действительных корней');
    
wait;  
end

И лучше поставить высокую степень точности (погрешность до 0.000001)

impersonalis 03.02.2010 15:57

Ответ: Перевод кода Pascal abc в код MidletPascal
 
Не знаток MidletPascal, но не стоит ли связку
if-if-if оптимизровать до if-else if-else?

odd 03.02.2010 16:08

Ответ: Перевод кода Pascal abc в код MidletPascal
 
Цитата:

Сообщение от impersonalis (Сообщение 135821)
Не знаток MidletPascal, но не стоит ли связку
if-if-if оптимизровать до if-else if-else?

Оно того не стоит, разницы в сотые доли миллисекунд никто не заметит.

Protey 03.02.2010 22:07

Ответ: Перевод кода Pascal abc в код MidletPascal
 
Цитата:

Сообщение от odd (Сообщение 135820)
Элементарно, Ватсон.

PHP код:

Program x2;
var
   
abcdreal;
   
id_1id_2id_3iinteger;
   
cmd_okclickedcommand;


Procedure wait;
begin
    cmd_ok
:=CreateCommand('OK'CM_OK1);
    
AddCommand(cmd_ok);
    
Repaint;   
    
repeat 
      clicked 
:= GetClickedCommand;
      
Delay(20);
    
until clicked cmd_ok;
end;


begin
    ShowForm
;
    
id_1:= FormAddTextField('Ввести коэффициент a'''20TF_NUMERIC);
    
id_2:= FormAddTextField('Ввести коэффициент b'''20TF_NUMERIC);
    
id_3:= FormAddTextField('Ввести коэффициент c'''20TF_NUMERIC);
    
wait;
    
a:=StringToReal(FormGetText(id_1), 10);
    
b:=StringToReal(FormGetText(id_2), 10);
    
c:=StringToReal(FormGetText(id_3), 10);
    
d:=b*b-4*a*c;
    
ClearForm;
    
i:=FormAddString('D = ' d);
    if 
0 then
    begin
        i
:=FormAddString('D > 0 Два корня:');
        
i:=FormAddString('Меньший= '+(-b-sqrt(d))/2*a);
        
i:=FormAddString('Больший= '+(-b+sqrt(d))/2*a);
    
end;
    if 
0 then i:=FormAddString('D = 0 Один корень: x='+( -b/2*a));
    if 
0 then i:=FormAddString('D < 0 Нет действительных корней');
    
wait;  
end

И лучше поставить высокую степень точности (погрешность до 0.000001)

вот спасибочки, эх, теперь бы еще самому разобраться как ты это написал, какая команда за что отвечает, и будет просто замичательно))

Protey 04.02.2010 21:24

Ответ: Перевод кода Pascal abc в код MidletPascal
 
i:=FormAddString('Меньший= '+(-b-sqrt(d))/2*a);

не делит на 2*а, пытался заменить на:

i:=FormAddString('Меньший= '+((-b-sqrt(d))/2*a);

компилятор ругнулся

odd 04.02.2010 21:30

Ответ: Перевод кода Pascal abc в код MidletPascal
 
Попробуй:
PHP код:

i:=FormAddString('Меньший= '+(-b-sqrt(d))/(2*a)); 

Хотя я проверял по примерим из учебника вроде правильно считает.

Protey 04.02.2010 22:26

Ответ: Перевод кода Pascal abc в код MidletPascal
 
а, нет, всё норм, ща на эмуляторе проверил, походу тело сглючило, всётаки зря я его 2 раза стирал и n-ное число раз ронял на бетон))

надо еще красоту навести добавив картинок)), чтобы вместо 11 килобайт, весило все 500 ;)

odd 04.02.2010 22:38

Ответ: Перевод кода Pascal abc в код MidletPascal
 
:-D Можешь для красоты ещё добавить рисование графика функции.
И чтоб выводило весь ход решения подробно.
Тогда программа точно будет супер.

Protey 04.02.2010 23:36

Ответ: Перевод кода Pascal abc в код MidletPascal
 
Цитата:

Сообщение от odd (Сообщение 135990)
:-D Можешь для красоты

на обычном паскале может и смогу, на этом - через пару лет )) уж слишком непонятно мне тут многое

UPD: не совсем понял (точнее совсем не понял) как это юзать:

Цитата:

Выводит картинку в буфер экрана. Координаты x и y описывают в какой точке должен будет находиться левый верхний угол картинки (отсчет ведется тоже от левого верхнего угла экрана).

procedure DrawImage(img: image; x, y: integer);
--------------------------------------------------------------------------------
Пример

begin
DrawImage(LoadImage('/logo.png'), 0, 0);
Repaint;
Delay(1000);
end.
UPD2: еее, разобрался, значит я ещё не совсем плох :-)
UPD3: вопрос, в каком месте нужно прописать команду на прорисовку картинки, чтобы при запуске приложения показывалась картинка, и после нажатия кнопки программа продолжала работу?

odd 05.02.2010 01:11

Ответ: Перевод кода Pascal abc в код MidletPascal
 
вставь её перед ShowForm;
Что-то типа:
PHP код:

DrawImage(LoadImage('/logo.png'), 00);  
   
Repaint;  
   
Delay(5000);  
ShowForm


Protey 05.02.2010 03:35

Ответ: Перевод кода Pascal abc в код MidletPascal
 
обрубается небольшой кусок экрана:
полоска сверху - полоска снизу, тело - соник к530i
как поправить?

odd 05.02.2010 04:34

Ответ: Перевод кода Pascal abc в код MidletPascal
 
Цитата:

Сообщение от Protey (Сообщение 136038)
обрубается небольшой кусок экрана:
полоска сверху - полоска снизу, тело - соник к530i
как поправить?

Поставь в настройках твоей программы (Вид - Свойства проекта или View - Project Properties если у тебя английская версия) параметр "Тип мидлета - MIDP 2.0 Весь экран" (в английской версии MIDlet Type - MIDP2.0 Full Screen).

Protey 05.02.2010 15:38

Ответ: Перевод кода Pascal abc в код MidletPascal
 
сделал, спс, все гут
кстате на знаменатель всё же не делило, добавил две скобки, вроде работает

PHP код:

'Больший= '+(-b+sqrt(d))/(2*a)) 


odd 05.02.2010 18:15

Ответ: Перевод кода Pascal abc в код MidletPascal
 
Ну и славно. Успехов тебе в деле изучения MP!
Я думаю, эту ветку можно закрывать и удалять.

Twice 03.02.2011 13:43

Ответ: Перевод кода Pascal abc в код MidletPascal
 
а при TF_NUMERIC знак - же никак не поставить? нужно TF_ANY юзать?


Часовой пояс GMT +4, время: 07:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot