|
Основной форум Сюда все проблемы связанные с программированием. |
11.10.2009, 12:50
|
#1
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Чет не пашет( Спецы посмотрите а???
Создаю первую програму для нахождения синусов,косинусов ну и т.д. пока работает только синус, и тот не хочет выводить ответ.
Вот собственно код:
Program math;
procedure menu;
var STReal:real;
str:string;
itemId,STI:integer;
sinI,cosI,tgI,ctgI,id:real;
cmd, cmdOK, cmdExit: command;
exit: boolean;
Begin
ShowMenu('Главное меню',CH_IMPLICIT);
id:=MenuAppendString('sin');
id:=MenuAppendString('cos');
id:=MenuAppendString('tg');
id:=MenuAppendString('ctg');
id:=MenuAppendString('Выход');
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
Repaint;
cmd := EMPTYCOMMAND;
repeat
cmd:=GetClickedCommand;
if cmd=cmdExit then Halt;
Delay(50); // Вставь тут небольшую паузу. Система же должна считывать клавиатуру.
until cmd=cmdOk;
repaint;
ShowForm;
if MenuGetSelectedIndex=0 then
Begin
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
Repaint;
cmd := EMPTYCOMMAND;
repaint;
itemId:=FormAddTextField('Введите число','',20,TF_NUMERIC);
repaint;
str:=FormGetText(itemId);
STI:=StringToInteger(str);
STReal:=StringToReal(str,STI);
sinI:=sin(STReal);
repeat
cmd:=GetClickedCommand;
if cmd=cmdExit then Halt
else if cmd=cmdOk then DrawText('Sin числа'+STReal+'='+SinI,5,5);
Delay(50); // Вставь тут небольшую паузу. Система же должна считывать клавиатуру.
until cmd=cmdOk;
repaint;
end; else
if MenuGetSelectedIndex=1 then
Begin
end; else
if MenuGetSelectedIndex=2 then
Begin
end; else
if MenuGetSelectedIndex=3 then
Begin
end; else
if MenuGetSelectedIndex=4 then Halt;
repaint;
End;
Begin
menu;
repaint;
end.
Помогите решыть проблему
|
(Offline)
|
|
11.10.2009, 15:35
|
#2
|
Знающий
Регистрация: 18.03.2009
Сообщений: 223
Написано 10 полезных сообщений (для 17 пользователей)
|
Ответ: Чет не пашет( Спецы посмотрите а???
Program math;
procedure menu;
var STReal:real;
str:string;
itemId:integer;
sinI,cosI,tgI,ctgI,id:real;
cmd, cmdOK, cmdExit: command;
Begin
ShowForm;
ShowMenu('Главное меню',CH_IMPLICIT);
id:=MenuAppendString('sin');
id:=MenuAppendString('cos');
id:=MenuAppendString('tg');
id:=MenuAppendString('ctg');
id:=MenuAppendString('Выход');
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
cmd := EMPTYCOMMAND;
repeat
cmd:=GetClickedCommand;
if cmd=cmdExit then Halt;
until cmd=cmdOk;
ShowForm;
if MenuGetSelectedIndex=0 then
Begin
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
itemId:=FormAddTextField('Введите число с точностьюдо сотых','',20,TF_ANY);
repeat
Delay(50);
cmd:=GetClickedCommand;
until cmd=cmdOk;
showCanvas; // переход в режим канвас
str:=FormGetText(itemId);
{ STI:=StringToInteger(str); эту строку я ваще не понял }
STReal:=StringToReal(str,100); // так как с точностью до сотых то вводим 100, можно увеличить в случаи необходимости
sinI:=sin(STReal);
cmd:=GetClickedCommand;
if cmd=cmdExit then Halt;
setcolor(0,0,0);
DrawText('Sin числа'+STReal+'='+sinI,5,5);
repaint;
delay(10000);
end else
if MenuGetSelectedIndex=1 then
Begin
end else
if MenuGetSelectedIndex=2 then
Begin
end else
if MenuGetSelectedIndex=3 then
Begin
end else
if MenuGetSelectedIndex=4 then Halt;
End;
Begin
menu;
end.
__________________
И суслики вам не помогут
|
(Offline)
|
|
13.10.2009, 23:20
|
#3
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Чет не пашет( Спецы посмотрите а???
Всмисле?????????
|
(Offline)
|
|
14.10.2009, 15:44
|
#4
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Чет не пашет( Спецы посмотрите а???
Program math;
procedure menu; var STReal:real; str, work:string; itemId:integer; I, id:real; cmd, cmdOk, cmdExit: command; Begin repeat ShowForm; ShowMenu('Главное меню',CH_IMPLICIT); id:=MenuAppendString('sin'); id:=MenuAppendString('cos'); id:=MenuAppendString('tg'); id:=MenuAppendString('ctg'); id:=MenuAppendString('Выход'); cmdOk:=CreateCommand('ОК', CM_OK, 1); cmdExit:=CreateCommand('Выход', CM_EXIT, 2); AddCommand(cmdOk); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно. AddCommand(cmdExit); repeat cmd:=GetClickedCommand; Delay(50); if cmd=cmdExit then Halt; until cmd=cmdOk; ClearForm; if MenuGetSelectedIndex<>4 then begin id := MenuGetSelectedIndex; cmdOk:=CreateCommand('ОК', CM_OK, 1); cmdExit:=CreateCommand('Выход', CM_EXIT, 2); AddCommand(cmdOk); AddCommand(cmdExit); itemId:=FormAddTextField('Введите число с точностью до сотых','',20,TF_NUMERIC); repeat Delay(50); cmd:=GetClickedCommand; if (cmd = cmdExit) then Halt; until cmd = cmdOk; str:=FormGetText(itemId); //STI:=StringToInteger(str); эту строку я ваще не понял STReal:=StringToReal(str, 10); // так как с точностью до сотых то вводим 100, можно увеличить в случаи необходимости if (id = 0) then begin I:=sin(STReal); work:='sin'; end; if (id = 1) then begin I:=cos(STReal); work:='cos'; end; if (id = 2) then begin I:=tan(STReal); work:='tan'; end; if (id = 3) then begin I:=1 / tan(STReal); work:='ctg'; end; ShowCanvas; setcolor(255,255,255); FillRect(0,0,GetWidth,getHeight); setcolor(0,0,0); DrawText(work + ' ('+STReal+') = ' + I, 5, 5); repaint; delay(10000); end; else Halt; until false; End;
Begin menu; end.
Теперь всё пашет. Даже синусы с косинусами и проч.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.10.2009, 16:16
|
#5
|
Знающий
Регистрация: 18.03.2009
Сообщений: 223
Написано 10 полезных сообщений (для 17 пользователей)
|
Ответ: Чет не пашет( Спецы посмотрите а???
если надо воспользуйся функцией function toDegrees(num: real):real; Преобразует заданный угол из радиан в градусы.
__________________
И суслики вам не помогут
|
(Offline)
|
|
14.10.2009, 20:26
|
#6
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Чет не пашет( Спецы посмотрите а???
Спасибо СПЕЦЫ)))
Отдельное спасибо ODD!!!
Выложу мой код,ето просто капец)))
Подскажите пожалуста почему у меня на екран ответ не выводился???
Последний раз редактировалось JACUK, 15.10.2009 в 00:29.
|
(Offline)
|
|
15.10.2009, 09:48
|
#7
|
Знающий
Регистрация: 18.03.2009
Сообщений: 223
Написано 10 полезных сообщений (для 17 пользователей)
|
Ответ: Чет не пашет( Спецы посмотрите а???
showCanvas; // переход в режим канвас - ты эту функцию забыл использовать... функции drawtext repaint - это функции канвас, на формах (ShowForm) они не работают....
__________________
И суслики вам не помогут
|
(Offline)
|
|
29.10.2009, 21:10
|
#8
|
Знающий
Регистрация: 09.10.2009
Сообщений: 340
Написано 37 полезных сообщений (для 61 пользователей)
|
Ответ: Чет не пашет( Спецы посмотрите а???
Вот как обещал мой код))))
Program math;
procedure menu;
var STReal:real;
str:string;
itemId,STI, a,b,c,d,e:integer;
sinI,cosI,tgI,ctgI,id:real;
cmd, cmdOK, cmdExit,OK, clicked: command;
exit: boolean;
Begin
ShowMenu('Главное меню',CH_IMPLICIT);
a:=MenuAppendString('sin');
b:=MenuAppendString('cos');
c:=MenuAppendString('tg');
d:=MenuAppendString('ctg');
e:=MenuAppendString('Выход');
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
Repaint;
cmd := EMPTYCOMMAND;
repeat
cmd:=GetClickedCommand;
if cmd=cmdExit then Halt;
Delay(50); // Вставь тут небольшую паузу. Система же должна считывать клавиатуру.
until cmd=cmdOk;
repaint;
ShowForm;
if MenuGetSelectedIndex=a then
Begin
itemId:=FormAddTextField('Введите число','',20,TF_NUMERIC);
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
Repaint;
cmd := EMPTYCOMMAND;
str:=FormGetText(itemId);
repeat
delay(100);
clicked := getClickedCommand;
if cmd=cmdExit then Halt;
until clicked = cmdOK;
if cmd=cmdOk then begin
str:=FormGetText(itemId);
STI:=StringToInteger(str);
STReal:=StringToReal(str,STI);
sinI:=sin(STReal);
ClearForm;
setcolor(255,255,255);
FillRect(0,0,GetWidth,getHeight);
setcolor(0,0,0);
DrawText('gh'+sinI, 10, 20);
repaint;
delay(10000);
end;
end; else
if MenuGetSelectedIndex=b then
Begin
itemId:=FormAddTextField('Введите число','',20,TF_NUMERIC);
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
Repaint;
cmd := EMPTYCOMMAND;
repeat
cmd:=GetClickedCommand;
if cmd=cmdExit then Halt;
Delay(50); // Вставь тут небольшую паузу. Система же должна считывать клавиатуру.
until cmd=cmdOk;
repaint;
str:=FormGetText(itemId);
STI:=StringToInteger(str);
STReal:=StringToReal(str,STI);
cosI:=cos(STReal);
DrawText('Cos числа'+STReal+'='+CosI,5,5);
repaint;
end; else
if MenuGetSelectedIndex=c then
Begin
itemId:=FormAddTextField('Введите число','',20,TF_NUMERIC);
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
Repaint;
cmd := EMPTYCOMMAND;
repeat
cmd:=GetClickedCommand;
if cmd=cmdExit then Halt;
Delay(50); // Вставь тут небольшую паузу. Система же должна считывать клавиатуру.
until cmd=cmdOk;
repaint;
str:=FormGetText(itemId);
STI:=StringToInteger(str);
STReal:=StringToReal(str,STI);
tgI:=sin(STReal);
DrawText('Tg числа'+STReal+'='+tgI,5,5);
repaint;
end; else
if MenuGetSelectedIndex=c then
Begin
itemId:=FormAddTextField('Введите число','',20,TF_NUMERIC);
cmdOK:=CreateCommand('ОК', CM_OK, 1);
cmdExit:=CreateCommand('Выход', CM_EXIT, 2);
AddCommand(cmdOK); // Тут немного непонятно. Клавиша выбора там уже и так есть, но ладно.
AddCommand(cmdExit);
Repaint;
cmd := EMPTYCOMMAND;
repeat
cmd:=GetClickedCommand;
if cmd=cmdExit then Halt;
Delay(50); // Вставь тут небольшую паузу. Система же должна считывать клавиатуру.
until cmd=cmdOk;
repaint;
str:=FormGetText(itemId);
STI:=StringToInteger(str);
STReal:=StringToReal(str,STI);
ctgI:=cos(STReal)/sin(STReal);
DrawText('Ctg числа'+STReal+'='+ctgI,5,5);
repaint;
end; else
if MenuGetSelectedIndex=d then Halt;
End;
Begin
menu;
repaint;
end.
И всеравно не пашет(((
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:46.
|