• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа на Паскаль

Skywoker95_95

Ученик
Регистрация
17 Сен 2013
Сообщения
8
Реакции
0
Баллы
0
Программа на Паскаль

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