17.09.2013, 01:47 | #1 (permalink) |
Новичок
Регистрация: 17.09.2013
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Программа на Паскаль
Файловый тип данных. Написать программу на я зыке паскаля Типизированный файл <input.dat'>с элементами типа real содержит таблицу значений ф-ции sin x. Первая половина файла-отсчеты значений x (возрастающем порядке), вторая половина значений-значения ф-ции sin для значения x из первой половины. Определить, сколько целых периодов ф-ции sin содержит таблица ( использовать тот факт, что при пересечении ось Ox значения ф-ции меняют знак). |
17.09.2013, 01:47 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Скорее всего в данных темах будет что то нужное для вас Программа на Паскаль. Множества Паскаль Паскаль. Программа выводящая в перевернутом виде каждое слово Паскаль-программа Паскаль. Программа обработки массива Программа на Паскаль |
17.09.2013, 11:32 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Некоторые пояснения. В первой части программы формируется типизированный (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. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|