Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 14:53   #1
Mr.BL@CK
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 27
По умолчанию Процедуры и абсолютные переменные

Задан вещественный массив , его элементы – это значения углов в радианах. Сформировать для каждого значения элементы целочисленных массивов , которые определяют эти же углы в градусах, минутах и секундах.
Примечание. Секунды должны быть округлены до ближайшего целого значения. Интервалы значений: .
Рекомендация.
Обозначим через исходное значения угла в радианах, через b – то же в градусах (x и b – вещественные значения), через g, m, s – целочисленные значения градусов, минут и секунд. Тогда требуемое преобразование можно выполнить в следующем порядке:
b:=180*y/pi
g:=trunc(b)
b:=180*(b-g)/pi
m:=trunc(b)
b:=180*(b-m)/pi
s:=round(b)

Решить задание используя процедуры и абсолютные переменные.

Я вот начал, но дальше возникли проблемы - а именно - как расписать процедурой преобразование значение углов


Код:
 NmaxX = 100;           { макс.кол-во элементов в массиве Х }
    NmaxG = 200;           { то же для массива G }
    NmaxM = 300;           { то же для массива M }
   NmaxS = 300;           { то же для массива S}
    Enter = 13;            { код клавиши Enter }
    Escape = 27;           { код клавиши Escape }
    PressKey = 'Нажмите клавишу Enter';
Type
    Xar = array[1..NmaxX] of real;
    Gar = array[1..NmaxY] of integer;
    Mar = array[1..NmaxZ] of integer;
	Sar = array[1..NmaxX] of integer;
	
	Var
    nX,nM,nG,nS: integer;    { кол-во эл-тов в массивах X,M,G,S}
	b,x :real;
	g,m,s : integer;
	
    Reply : char;          { символ ответа на запрос программы }
    X : Xar;               { исходный массив X }
    G : Gar;               { исходный массив G }
    M : Mar;                { исходный массив M }
    S :	Sar;               { исходный массив S }
    FileX :text           { исходные файлы }
{ --------------------------------------------------------- }
Procedure WaitEnter;
{ Задержка выполнения программы до тех пор, }
{ пока не будет нажата клавиша Enter        }
Var ch : char;
Begin
  Repeat ch:=ReadKey;
  Until ord(ch) = Enter;
End { WaitEnter };
{ ------------------------------------------------------------- }
Procedure PrintString(X,Y:integer; S:string);
{ Печать строки S с позиции X строки экрана с номером Y }
Begin
  GotoXY(X,Y);
  Write(S);
End { PrintString };
{ ------------------------------------------------------------- }
Procedure PrintKeyAndWaitEnter;
{ Печать строки-константы PressKey с позиции 1 строки экрана 25 }
{ и задержка выполнения программы до нажатия клавиши Enter      }
Begin
  PrintString(1,25,PressKey);
  WaitEnter;
  ClrScr;
End { PrintKeyAndWaitEnter };
{ ------------------------------------------------------------- }
Procedure ControlPageScreen(Var j,KeyExit:byte);
{ Контроль размера страницы на экране }
Const LengthPage = 23;  { кол-во строк на одной странице }
      S = 'След.страница - "Enter", конец просмотра - "Escape"';
Var ch : char;
Begin
  Inc(j); KeyExit:=0;
  If j=LengthPage then
    Begin
      j:=0;
      PrintString(1,25,S);
      Repeat
        ch:=ReadKey; KeyExit:=ord(ch);
      Until (KeyExit=Enter) or (KeyExit=Escape);
      ClrScr;
    End;
End { ControlPageScreen };
{ ------------------------------------------------------------- }
Procedure ReadArray(Var FileArray:text; Var A; Var n:integer);
{ Ввод исходного массива }
Type RealAr = array[1..2*MaxInt div SizeOf(real)] of real;
Var  i : integer;
Begin
  Reset(FileArray);
  n:=0;
  While not SeekEof(FileArray) do
    Begin
      Inc(n);
      Read(FileArray,RealAr(A)[n]);
    End;
  Close(FileArray);
End { ReadArray };
{ ------------------------------------------------------------- }
Procedure ScreenArray(Var A; n:integer; S:string);
{ Вывод исходного массива на экран }
Type RealAr = array[1..2*MaxInt div SizeOf(real)] of real;
Var  i : integer;
    j,k,KeyExit : byte;
Begin
  ClrScr; j:=0; k:=0;
  Writeln(S);
  For i:=1 to n do
    Begin
      Inc(k);
      If k<5 then
        Write(RealAr(A)[i]:8:2,' ':4)
      Else
        Begin
          k:=0; Inc(j);
          Writeln(RealAr(A)[i]:8:2);
          ControlPageScreen(j,KeyExit);
          If KeyExit=Escape then Exit;
        End;
    End;
  If k>0 then Writeln;
  PrintKeyAndWaitEnter;
End { ScreenArray };
{ ------------------------------------------------------------- }
Mr.BL@CK вне форума Ответить с цитированием
Старый 13.12.2010, 09:57   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Что такое абсолютные переменные? Не глобальные?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.12.2010, 16:58   #3
Mr.BL@CK
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 27
По умолчанию

Я тут побывал на занятии - в общем моя задача упрощена
теперь лишь нужно написать процедуру , которая будет переводить радианы в градусы и минуты и т.д.
использовать нужно b:=180*y/pi
g:=trunc(b)
b:=180*(b-g)/pi
m:=trunc(b)
b:=180*(b-m)/pi
s:=round(b)

вот тут я пас (
Mr.BL@CK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как задать абсолютные координаты Shape-у на N-той странице? Diego__ Microsoft Office Word 4 06.07.2012 23:38
Поменять абсолютные ссылки на листе m_v_v Microsoft Office Excel 2 01.02.2010 15:25
Изменение группы ссылок на абсолютные/относительные MaxxVer Microsoft Office Excel 3 11.12.2009 10:11
Трансформация относительных ссылок в абсолютные d-kiselev Microsoft Office Excel 2 18.12.2008 21:27
абсолютные адреса kano Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 01.07.2008 20:49