Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 02.02.2010, 04:20   #1
Protey
Оператор ЭВМ
 
Аватар для Protey
 
Регистрация: 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
dimka0074
AnyKey`щик
 
Регистрация: 02.02.2010
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Перевод кода Pascal abc в код MidletPascal

Вроде нет ошибок
(Offline)
 
Ответить с цитированием
Старый 02.02.2010, 09:36   #3
Protey
Оператор ЭВМ
 
Аватар для Protey
 
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение
(для 2 участников)
Ответ: Перевод кода Pascal abc в код MidletPascal

относительно привычного паскаля нет, а вот если переводить в midlet, то ошибка в 6 и 8 строках вроде, там вместо writeln должно быть что то вроде drawtext, но т.к. я не силён, поэтому попросил помощи у знающих
(Offline)
 
Ответить с цитированием
Старый 02.02.2010, 14:37   #4
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Перевод кода Pascal abc в код MidletPascal

Почитай хелп, думаю, все станет ясно.
Если нужно вводить числа, лучше использовать формы. Тогда ввод можно реализовать с помощью TextField, а вывод с помощью FormAddString или Alert.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Protey (02.02.2010)
Старый 02.02.2010, 16:49   #5
VotapilD
Оператор ЭВМ
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Protey (02.02.2010)
Старый 02.02.2010, 21:59   #6
Protey
Оператор ЭВМ
 
Аватар для Protey
 
Регистрация: 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
VotapilD
Оператор ЭВМ
 
Регистрация: 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(promptdefaultValues tring;maxSizeintegerconstraints:integer):integer



Example
var textField_idinteger;
begin
    textField_id := FormAddTextField('Enter your name', 'Mr.Smith', 20, TF_ANY);
    ShowForm;
    Delay(2000);
end.
icq 473606809 после 10
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Protey (02.02.2010)
Старый 02.02.2010, 22:49   #8
Protey
Оператор ЭВМ
 
Аватар для Protey
 
Регистрация: 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
VotapilD
Оператор ЭВМ
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Protey (02.02.2010)
Старый 02.02.2010, 22:53   #10
Protey
Оператор ЭВМ
 
Аватар для Protey
 
Регистрация: 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
VotapilD
Оператор ЭВМ
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Protey (02.02.2010)
Старый 02.02.2010, 23:05   #12
VotapilD
Оператор ЭВМ
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Protey (02.02.2010)
Старый 02.02.2010, 23:09   #13
Protey
Оператор ЭВМ
 
Аватар для Protey
 
Регистрация: 02.02.2010
Сообщений: 37
Написано одно полезное сообщение
(для 2 участников)
Ответ: Перевод кода Pascal abc в код MidletPascal

спасибо, более-менее разобрался, теперь осталось только добавить пару переносов (все слова в экран не влезают) и будут совсем гуты
(Offline)
 
Ответить с цитированием
Старый 03.02.2010, 00:16   #14
odd
Мастер
 
Аватар для odd
 
Регистрация: 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
Protey
Оператор ЭВМ
 
Аватар для Protey
 
Регистрация: 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)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com