forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Чет не пашет( Спецы посмотрите а??? (http://forum.boolean.name/showthread.php?t=9481)

JACUK 11.10.2009 12:50

Чет не пашет( Спецы посмотрите а???
 
Создаю первую програму для нахождения синусов,косинусов ну и т.д. пока работает только синус, и тот не хочет выводить ответ.
Вот собственно код:
Код:

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.

Помогите решыть проблему

demon112 11.10.2009 15:35

Ответ: Чет не пашет( Спецы посмотрите а???
 
Код:

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.


JACUK 13.10.2009 23:20

Ответ: Чет не пашет( Спецы посмотрите а???
 
Всмисле?????????

odd 14.10.2009 15:44

Ответ: Чет не пашет( Спецы посмотрите а???
 
PHP код:

Program math;

procedure menu;
var  
STReal:real;
     
strwork:string;
     
itemId:integer;
     
Iid:real;
     
cmdcmdOkcmdExitcommand;
Begin
    repeat
    ShowForm
;
    
ShowMenu('Главное меню',CH_IMPLICIT);
    
id:=MenuAppendString('sin');
    
id:=MenuAppendString('cos');
    
id:=MenuAppendString('tg');
    
id:=MenuAppendString('ctg');
    
id:=MenuAppendString('Выход');
    
cmdOk:=CreateCommand('ОК'CM_OK1);
    
cmdExit:=CreateCommand('Выход'CM_EXIT2);
    
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_OK1);
        
cmdExit:=CreateCommand('Выход'CM_EXIT2);
        
AddCommand(cmdOk);
        
AddCommand(cmdExit);
        
itemId:=FormAddTextField('Введите число с точностью до сотых','',20,TF_NUMERIC);
        
repeat
            Delay
(50);
            
cmd:=GetClickedCommand;
             if (
cmd cmdExitthen Halt;
        
until cmd cmdOk;
        
str:=FormGetText(itemId);
        
//STI:=StringToInteger(str); эту строку я ваще не понял
        
STReal:=StringToReal(str10); // так как с точностью до сотых то вводим 100, можно увеличить в случаи необходимости
        
if (id 0then begin I:=sin(STReal); work:='sin'end;
        if (
id 1then begin I:=cos(STReal); work:='cos'end;
        if (
id 2then begin I:=tan(STReal); work:='tan'end;
        if (
id 3then begin I:=tan(STReal); work:='ctg'end;
        
ShowCanvas;
        
setcolor(255,255,255); FillRect(0,0,GetWidth,getHeight);
        
setcolor(0,0,0);
        
DrawText(work ' ('+STReal+') = ' I55);
        
repaint;
        
delay(10000);
    
end;
    else 
Halt;
    
until false;
End;

Begin
    menu
;
end

Теперь всё пашет. Даже синусы с косинусами и проч.

demon112 14.10.2009 16:16

Ответ: Чет не пашет( Спецы посмотрите а???
 
если надо воспользуйся функцией function toDegrees(num: real):real; Преобразует заданный угол из радиан в градусы.

JACUK 14.10.2009 20:26

Ответ: Чет не пашет( Спецы посмотрите а???
 
Спасибо СПЕЦЫ)))
Отдельное спасибо ODD!!!
Выложу мой код,ето просто капец)))
Подскажите пожалуста почему у меня на екран ответ не выводился???

demon112 15.10.2009 09:48

Ответ: Чет не пашет( Спецы посмотрите а???
 
showCanvas; // переход в режим канвас - ты эту функцию забыл использовать... функции drawtext repaint - это функции канвас, на формах (ShowForm) они не работают....

JACUK 29.10.2009 21:10

Ответ: Чет не пашет( Спецы посмотрите а???
 
Вот как обещал мой код))))
Код:

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.

И всеравно не пашет(((


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

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