Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 17.09.2013, 01:47   #1 (permalink)
Skywoker95_95
Новичок
 
Регистрация: 17.09.2013
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программа на Паскаль

Привет. Помогите пожалуйста. нужна срочно
Файловый тип данных. Написать программу на я зыке паскаля
Типизированный файл <input.dat'>с элементами типа real содержит таблицу значений ф-ции sin x. Первая половина файла-отсчеты значений x (возрастающем порядке), вторая половина значений-значения ф-ции sin для значения x из первой половины. Определить, сколько целых периодов ф-ции sin содержит таблица ( использовать тот факт, что при пересечении ось Ox значения ф-ции меняют знак).
Skywoker95_95 вне форума   Ответить с цитированием

Старый 17.09.2013, 01:47
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Скорее всего в данных темах будет что то нужное для вас

Программа на Паскаль. Множества
Паскаль
Паскаль. Программа выводящая в перевернутом виде каждое слово
Паскаль-программа
Паскаль. Программа обработки массива
Программа на Паскаль

Старый 17.09.2013, 11:32   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Skywoker95_95 Посмотреть сообщение
Привет. Помогите пожалуйста. нужна срочно
Файловый тип данных. Написать программу на я зыке паскаля
Типизированный файл <input.dat'>с элементами типа real содержит таблицу значений ф-ции sin x. Первая половина файла-отсчеты значений x (возрастающем порядке), вторая половина значений-значения ф-ции sin для значения x из первой половины. Определить, сколько целых периодов ф-ции sin содержит таблица ( использовать тот факт, что при пересечении ось Ox значения ф-ции меняют знак).
Извольте.
Некоторые пояснения.
В первой части программы формируется типизированный (Real) файл. Взято 200 точек в интервале 0..20, их значения заносятся в файл. Далее в файл заносятся значения функции Sin(x+Δ), причем значение Δ выбирается случайным образом в интервале 0..6.2 (чтобы интереснее было). Естественно, количество точек может быть изменено.
Далее программа "забывает" количество точек и эта информация извлекается из файла. Потом происходит считывание значений функции и определение числа периодов указанным в условии способом. Алгоритм таков: определяется наклон кривой в начале координат и присваивается соответствующее значение символьной переменной С - "+" при положительном наклоне, "-" - при отрицательном. Далее, если наклон положительный, то считается количество пересечений оси Х из отрицательной в положительную полуплоскость, если наклон отрицательный - наоборот. Для удобства эти условия описаны булевой функцией Change_Sign.
Ну вроде всё.
Код:
Const
 N=200;

Var
 f:File of Real;
 i,i0,Nper,Npoints:Integer;
 a,b,Dummy:Real;
 C:Char;

Function Change_Sign(D0:Char;D1,D2:real):Boolean;
begin
 Change_Sign:=((D0='+') and (D1<=0) and (D2>=0)) or
              ((D0='-') and (D1>=0) and (D2<=0));
end;

Begin
 Nper:=0;
 Randomize;
 Assign(f,'Input.dat');
 ReWrite(f);
 i0:=Random(62);
 for i:=i0+1 to N+i0 do
  begin
   Dummy:=0.1*i;
   write(f,Dummy);
  end;
 for i:=i0+1 to N+i0 do
  begin
   Dummy:=Sin(0.1*i);
   write(f,Dummy);
  end;
 Close(f);
 Npoints:=0;
 ReSet(f);
 Repeat
  If Not(EoF(f)) then
   begin
    Read(f,Dummy);
    Inc(Npoints);
   end;
 Until EoF(f);
 Npoints:=Npoints div 2;
 ReSet(f);
 For i:=1 to Npoints do Read(f,Dummy);
 Read(f,a,b);
 If a<b then C:='+' else C:='-';
 For i:=3 to Npoints do
  begin
   a:=b;
   Read(f,b);
   if Change_Sign(C,a,b) then Inc(Nper);
  end;
 Close(f);
 Writeln('Number of periods is ',Nper);
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


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

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




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.