|
Основной форум Сюда все проблемы связанные с программированием. |
02.02.2010, 04:20
|
#1
|
Оператор ЭВМ
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение (для 2 участников)
|
Перевод кода Pascal abc в код MidletPascal
Собственно возникла проблема с синтаксисом, буду очень благодарен если переведёте под MP и поясните
код на паскале
Program NewProject;
var
a,b,c:real; //известные величины
d:real; //дискрэменант
begin
writeln('Ввести коэффициенты a,b,c: ');
readln(a,b,c);
d := b*b-4*a*c; //дискрэменант
if d>0
then writeln('D>0 => Два корня: Меньший= ',(-b-sqrt(d))/2*a,', Больший= ',(-b+sqrt(d))/2*a)
else if d=0
then writeln('D=0 => Один корень: x=',-b/2*a)
else if d<0
then writeln('D<0 => Нет действительных корней');
readln;
end.
|
(Offline)
|
|
02.02.2010, 09:05
|
#2
|
AnyKey`щик
Регистрация: 02.02.2010
Сообщений: 1
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Вроде нет ошибок
|
(Offline)
|
|
02.02.2010, 09:36
|
#3
|
Оператор ЭВМ
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение (для 2 участников)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
относительно привычного паскаля нет, а вот если переводить в midlet, то ошибка в 6 и 8 строках вроде, там вместо writeln должно быть что то вроде drawtext, но т.к. я не силён, поэтому попросил помощи у знающих
|
(Offline)
|
|
02.02.2010, 14:37
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Почитай хелп, думаю, все станет ясно.
Если нужно вводить числа, лучше использовать формы. Тогда ввод можно реализовать с помощью TextField, а вывод с помощью FormAddString или Alert.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.02.2010, 16:49
|
#5
|
Оператор ЭВМ
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Вот пример ввода:
program HelloForm;
var itemId : integer;
cmdNext : command;
cmdQuit : command;
name : string;
begin
// switch to form mode from default canvas mode
ShowForm;
// add a text field to the form
itemId := FormAddTextField('Enter your name', '', 20, TF_ANY);
// create a command (button)
cmdNext := CreateCommand('Go!', CM_OK, 1);
AddCommand(cmdNext);
// wait until the user clickes on Go! command
repeat until GetClickedCommand = cmdNext; // retrieve the entered name
name := FormGetText(itemId); // switch back to canvas mode and draw the text
ShowCanvas;
DrawText('Hello, ' + name + '!', 0, 0);
Repaint;
// create a quit command
cmdQuit := CreateCommand('Quit', CM_EXIT, 1);
AddCommand(cmdQuit);
repeat until GetClickedCommand = cmdQuit;
End.
Тут вводиццо имя через форму(itemId := FormAddTextField('Enter your name', '', 20, TF_ANY); ) и потом выводится в canvas - drawtext('Hello, '+name+'!',0,0);
Ну, должно быть понятно.... А так, Help=>Manual
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.02.2010, 21:59
|
#6
|
Оператор ЭВМ
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение (для 2 участников)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Program ypaBHeHu9;
var
a,b,c:real; //известные величины
d:real; //дискрэменант
textField_id: integer;
begin
textField_id := FormAddTextField('Ввести коэффициенты a,b,c: ', 50, TF_NUMERIC);
showform;
delay(2000);
d := b*b-4*a*c; //дискрэменант
if d>0
then writeln('D>0 => Два корня: Меньший= ',(-b-sqrt(d))/2*a,', Больший= ',(-b+sqrt(d))/2*a)
else if d=0
then writeln('D=0 => Один корень: x=',-b/2*a)
else if d<0
then writeln('D<0 => Нет действительных корней');
readln;
end.
компилятор выделил ошибку в 7 строке(по writeln в 12-14-16 я не говорю), обозвал как: ошибка в параметре 2
собственно вопрос, а что за параметр? FormAddTextField ?
кстате, может кто-нибудь из просветлённых сможет проконсультировать меня в асике/мирке/<ещё где-нибудь> (на ваш выбор) ?
|
(Offline)
|
|
02.02.2010, 22:36
|
#7
|
Оператор ЭВМ
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Inserts a text field to the form. The function returns the ID of the text field. The 'prompt' is the string displayed next to tet field. 'defaultValue' is the text that is initially in the text field. 'maxSize' is the maximum length of the text field in number of characters. 'constraints' can be any of the following:
·TF_ANY - text field can contain any characters
·TF_EMAIL - only email can be entered into text field
·TF_NUMERIC - only number can be entered into text field
·TF_PHONENUMBER - only phonenumber can be entered into text field
·TF_URL - only URL can be enetered into the ext field
·TF_PASSWORD - the text in the field is hidden, '*' character are displayed instead
function FormAddTextField(prompt, defaultValues tring;maxSizeinteger; constraints:integer):integer;
Example
var textField_idinteger;
begin
textField_id := FormAddTextField('Enter your name', 'Mr.Smith', 20, TF_ANY);
ShowForm;
Delay(2000);
end.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.02.2010, 22:49
|
#8
|
Оператор ЭВМ
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение (для 2 участников)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
чтото вроде этого:
Program ypaBHeHu9;
var
a,b,c:real; //известные величины
d:real; //дискрэменант
textField_id: integer;
begin
textField_id := FormAddTextField('Ввести коэффициенты a,b,c: ', '1', 20, TF_NUMERIC);
showform;
delay(10000);
d := b*b-4*a*c; //дискрэменант
begin
if d>0
then drawtext('D>0 => Два корня: Меньший= ',(-b-sqrt(d))/2*a,', Больший= ',(-b+sqrt(d))/2*a)
else if d=0
then drawtext('D=0 => Один корень: x=',-b/2*a)
else if d<0
then drawtext('D<0 => Нет действительных корней', 0, 0);
repaint;
end;
end.
компилятор ругается на строки: 13, 15
и честно говоря уже запутался как чего писать
|
(Offline)
|
|
02.02.2010, 22:49
|
#9
|
Оператор ЭВМ
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Protey=>
Id_a:= FormAddTextField('Ввести коэффициент a', '', 20, TF_NUMERIC);
Id_b:= FormAddTextField('Ввести коэффициент b', '', 20, TF_NUMERIC);
Id_c:= FormAddTextField('Ввести коэффициент c', '', 20, TF_NUMERIC);
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.02.2010, 22:53
|
#10
|
Оператор ЭВМ
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение (для 2 участников)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Сообщение от VotapilD
Protey=>
Id_a:= FormAddTextField('Ввести коэффициент a', '', 20, TF_NUMERIC);
Id_b:= FormAddTextField('Ввести коэффициент b', '', 20, TF_NUMERIC);
Id_c:= FormAddTextField('Ввести коэффициент c', '', 20, TF_NUMERIC);
|
вот это кстате ещё больше запутало
|
(Offline)
|
|
02.02.2010, 22:55
|
#11
|
Оператор ЭВМ
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Вот рабочий код...
a:= FormAddTextField('Ввести коэффициент a', '', 20, TF_NUMERIC); возвращает только число или строку. Не поочереди Так что переменные или из строчки извлекать или так.
Program ypaBHeHu9;
var
a,b,c:real; //известные величины
d:real; //дискрэменант
textField_id: integer;
begin
a:= FormAddTextField('Ввести коэффициент a', '', 20, TF_NUMERIC);
b:= FormAddTextField('Ввести коэффициент b', '', 20, TF_NUMERIC);
c:= FormAddTextField('Ввести коэффициент c', '', 20, TF_NUMERIC);
showform;
repaint;
delay(10000);
d:=b*b-4*a*c; //дискрэменант
showcanvas;
begin
if d>0
then drawtext('D>0 => Два корня: Меньший= '+(-b-sqrt(d))/2*a+', Больший= '+(-b+sqrt(d))/2*a,0,0)
else if d=0
then drawtext('D=0 => Один корень: x='+( -b/2*a),0,0)
else if d<0
then drawtext('D<0 => Нет действительных корней',0,0);
repaint;
delay(5000)
end;
end.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.02.2010, 23:05
|
#12
|
Оператор ЭВМ
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Вместо делея-
..............
showform;
repaint;
while KeyToAction(GetKeyClicked)<>GA_FIRE do delay(10);
d:=b*b-4*a*c; //дискрэменант
showcanvas;
begin
......
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.02.2010, 23:09
|
#13
|
Оператор ЭВМ
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение (для 2 участников)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
спасибо, более-менее разобрался, теперь осталось только добавить пару переносов (все слова в экран не влезают) и будут совсем гуты
|
(Offline)
|
|
03.02.2010, 00:16
|
#14
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
Сообщение от VotapilD
Вместо делея-
..............
showform;
repaint;
while KeyToAction(GetKeyClicked)<>GA_FIRE do delay(10);
d:=b*b-4*a*c; //дискрэменант
showcanvas;
begin
......
|
Кто тебя так учил опрашивать клавиатуру в режиме форм? Там для этого есть только команды (COMMAND).
|
(Offline)
|
|
03.02.2010, 10:02
|
#15
|
Оператор ЭВМ
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение (для 2 участников)
|
Ответ: Перевод кода Pascal abc в код MidletPascal
запутался в коде ;(
добрые люди, просветите пожалуйста, куда и что нужно дописать чтобы:
1) после ввода коэффициентов жмакать кнопку и приложение продолжало работу (временной интервал сложно подогнать оптимально, 5 мало, 10 много) ?
2) после вывода результата опять нажимать кнопку и приложение закрывалось?
3)<главное> сделать перенос слов скажем про дискременант на одной строке, про первый корень на второй, про второй корень - на третьей?
пол ночи читал различные хелпы - ниасилил ((
Program x2;
var
a,b,c:real; //известные величины
d:real; //дискрэменант
textField_id: integer;
begin
a:= FormAddTextField('Ввести коэффициент a', '', 20, TF_NUMERIC);
b:= FormAddTextField('Ввести коэффициент b', '', 20, TF_NUMERIC);
c:= FormAddTextField('Ввести коэффициент c', '', 20, TF_NUMERIC);
showform;
repaint;
delay(15000);
d:=b*b-4*a*c; //дискрэменант
showcanvas;
begin
if d>0
then drawtext('D>0 => Два корня: Меньший= '+(-b-sqrt(d))/2*a+', Больший= '+(-b+sqrt(d))/2*a,0,0)
else if d=0
then drawtext('D=0 => Один корень: x='+( -b/2*a),0,0)
else if d<0
then drawtext('D<0 => Нет действительных корней',0,0);
repaint;
while KeyToAction(GetKeyClicked)<>KE_KEY0 do delay(10);
end;
end.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:19.
|