19.12.2015, 17:10 | #1 (permalink) |
Member
Регистрация: 26.01.2013
Сообщений: 946
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 497
|
Помогите с контрольными по программированию на Паскале
|
19.12.2015, 17:10 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Данная тема уже обсуждалась ранее и возможно решена Задание по программированию в Pascal. Строки Чемпионат мира по программированию 2014 Хочу научиться программированию микроконтроллеров |
19.12.2015, 19:50 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Первое задание. Программа содержит обе подпрограммы (функцию и процедуру) Код:
Var n:Byte; Function Test3(M:Byte):Boolean; var M1,Sum:Byte; begin M1:=M; Sum:=0; repeat Sum:=Sum+(M1 mod 10); M1:=M1 div 10; until M1=0; Test3:=(Sum mod 3)=0; end; Procedure Print_Triangle(M:Byte); var i,j:Byte; begin for i:=1 to M do begin for j:=1 to i do write(j:4); writeln; end; end; Begin Write('n = '); Readln(n); Writeln(Test3(n)); Writeln; Print_Triangle(n); Readln End. |
|
19.12.2015, 21:23 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Второе задание. Тоже обе программы объединены:
Код:
Const M=10; N=12; Var A:Array[1..M] of Byte; B:Array[1..M,1..N] of Byte; i,j,Num:Byte; Begin Randomize; for i:=1 to M do begin A[i]:=Random(256); write(A[i]:4); end; Writeln; Writeln; Writeln(' i A[i]'); Num:=0; for i:=2 to M-1 do if A[i]<(A[i-1]+A[i+1])/2 then begin Inc(Num); Writeln(i:2,A[i]:8); end; Writeln; Writeln(Num, ' elements'); Writeln('Press "Enter" to continue'); Readln; for i:=1 to M do begin for j:=1 to N do begin B[i,j]:=Random(256); Write(B[i,j]:4); end; Writeln; end; Writeln; Writeln; Writeln('Minimal elements:'); Writeln(' i El'); for i:=1 to M do begin A[i]:=B[i,1]; for j:=2 to N do if B[i,j]<A[i] then A[i]:=B[i,j]; Writeln(i:2,A[i]:8); end; Readln End. |
19.12.2015, 21:43 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Третье задание:
Код:
Const Eps=0.00001; Nmax=200; Function S(z:real):Real; var a,Sum:real; k:byte; begin k:=0; a:=(Pi/2)/3*z*z*z; Sum:=a; Repeat Inc(k); a:=-a*Sqr(Pi/2)/(2*k)/(2*k+1)*(4*k-1)/(4*k+3)*Sqr(Sqr(z)); Sum:=Sum+a; Until (Abs(a)<Eps) or (k>Nmax); S:=Sum; end; Var i:Byte; Begin for i:=0 to 10 do writeln(0.5*i:3:1,S(0.5*i):12:3); Readln End. |
20.12.2015, 11:28 | #5 (permalink) |
Member
Регистрация: 26.01.2013
Сообщений: 946
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 497
|
Спасибо огромное!!!
С первым понял, вроде. Во втором как я понял в одномерном массиве число символов постоянно и равно 10? Сделал для задаваемых M и N. остальное тоже вроде пока понятно. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
20.12.2015, 11:55 | #7 (permalink) |
Member
Регистрация: 26.01.2013
Сообщений: 946
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 497
|
Также нужна программа для вычисления ряда Тейлора для ln(1+x). Мы на парах делали для вычисления sin(x). Но для логарифма у меня так и не получается. Могу скинуть синус в виде примера, чтоб вы поняли, что мне нужно для логарифма.
|
20.12.2015, 12:04 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Не, не надо синуса. У нас подобных задач рассмотрена куча. Сформулируйте четко задание и лучше выложите свои попытки решения.
|
20.12.2015, 13:02 | #9 (permalink) |
Member
Регистрация: 26.01.2013
Сообщений: 946
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 497
|
Вот я не знаю как четко сформулировать, преподаватель из головы сказал что должна делать программа.
Но попробую. Нужно разложить ln(1+x) в ряд Тейлора и найти сумму(вот это я сделал программа считает ее нормально), затем сравнить ее с табличным значением, если все нормально, то делать дальше. Дальше нужно, при задаваемом отрезке(его начального и конечного значений) и шаге по этому отрезку построить таблицу значений данной функции и записать эти значения в блокнот. Далее уже собственноручно скопировать эти значения из блокнота и вставить их в эксель и построить график по этим точкам, должен получиться логарифм. Его в качестве примера хотел показать. |
20.12.2015, 13:05 | #10 (permalink) |
Member
Регистрация: 26.01.2013
Сообщений: 946
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 497
|
Не знаю как текст программы вставлять, отправляю так свои начала по логарифму.
var n:integer; a,x,s,lnmy:real; begin writeln ('x?'); readln(x); if not ((x<=1) and (x>-1)) then writeln('Введенный х не попадает в область значений') else begin a:=x; s:=x; n:=1; repeat a:=-(a*x*n)/(n+1); s:=s+a; n:=n+1; until abs(a)<1e-7; lnmy:=s; writeln ('ln(1+x)=', lnmy,' ',ln(1+x)); end; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|