Lenin
Новичок
|
Code Sample:
Program DosMenu; uses crt; const c=6; NameRegime:array[1..c] of string[32]=('1 - Quadratic equation', '2 - Kramer method for matrix', '3 - Gauss method for matrix', '4 - Search of determinant', '5 - Reversed matrix', '6 - Exit'); var driver, mode, error:integer; i2,j2,w,z,zatr:integer; ch:char; procedure kvadr; var i:integer; a,b,c,d,x,x1,x2:real; begin write ('Type in a: '); readln (a); write ('Type in b: '); readln (b); write ('Type in c: '); readln (c); writeln; d:=((b*b)-(4*a*c)); writeln ('D=', d:3:0); if d>0 then begin x1:=(((0-b)+sqrt(d))/(2*a)); x2:=(((0-b)-sqrt(d))/(2*a)); writeln ('Solutions are: x1=', x1:3:5, '; x2=', x2:3:5); end; if d=0 then begin x:=((0-b)/(2*a)); writeln ('Solution is: x=', x:3:5); end; if d<0 then writeln ('Solutions are complex numbers.'); writeln; write ('Press "enter" to exit...'); readln; end; procedure kramer; const m=3; n=3; label M1; Type matr=array[1..m, 1..n] of real; var a,d:matr; b:array [1..m] of real; c:array [1..m] of real; dop:array [1..6] of real; i,j,k,t:integer; det, det1, det2, det3, x1, x2, x3:real; A11, A21, A31:real; begin writeln ('Type in matrix (array "A": )'); writeln; for i:=1 to m do begin for j:=1 to n do read (a[i,j]); readln; end; writeln; writeln ('Type in array "B": '); writeln; for i:=1 to m do begin read (b); end; det:=(((a[1,1])*(a[2,2])*(a[3,3])) +((a[1,2])*(a[2,3])*(a[3,1])) +((a[1,3])*(a[2,1])*(a[3,2])) -((a[1,3])*(a[2,2])*(a[3,1])) -((a[3,2])*(a[2,3])*(a[1,1])) -((a[3,3])*(a[2,1])*(a[1,2]))); det1:=(((b[1])*(a[2,2])*(a[3,3])) +((b[2])*(a[3,2])*(a[1,3])) +((a[1,2])*(a[2,3])*(b[3])) -((b[3])*(a[2,2])*(a[1,3])) -((b[2])*(a[1,2])*(a[3,3])) -((b[1])*(a[3,2])*(a[2,3]))); t:=-1; A11:=(((b[2])*(a[3,3]))-((b[3])*(a[2,3])))*((t)*(t)); A21:=(((b[1])*(a[3,3]))-((b[3])*(a[1,3])))*((t)*(t)*(t)); A31:=(((b[1])*(a[2,3]))-((b[2])*(a[1,3])))*((t)*(t)*(t)*(t)); det2:=(((a[1,1])*A11)+((a[2,1])*A21)+((a[3,1])*A31)); {!!determinant 3!!} t:=-1; for i:=1 to m do for j:=1 to n do d[i,j]:=a[i,j]; for i:=1 to m do d[i,3]:=b; for i:=1 to m do c:=((d[1,i])/(d[1,1]))*(d[2,1]); if c[1]>0 then if d[2,1]>0 then begin for i:=1 to m do c:=c*t; end; if c[1]<0 then if d[2,1]<0 then begin for i:=1 to m do c:=c*t; end; for i:=1 to m do d[2,i]:=d[2,i]+c; for i:=1 to m do c:=((d[1,i])/(d[1,1]))*(d[3,1]); if c[1]>0 then if d[3,1]>0 then begin for i:=1 to m do c:=c*t; end; if c[1]<0 then if d[3,1]<0 then begin for i:=1 to m do c:=c*t; end; for i:=1 to m do d[3,i]:=d[3,i]+c; for i:=2 to m do c:=((d[2,i])/(d[2,2]))*(d[3,2]); if c[2]<0 then if d[3,2]<0 then begin for i:=2 to m do c:=c*t; end; if c[2]>0 then if d[3,2]>0 then begin for i:=2 to m do c:=c*t; end; for i:=2 to m do d[3,i]:=d[3,i]+c; {writeln ('d[1,1]=',d[1,1]:2:0,'d[2,2]',d[2,2]:2:0,'d[3,3]',d[3,3]:2:0);} det3:=(d[1,1])*(d[2,2])*(d[3,3]); if det=0 then if (det1=0) and (det2=0) and (det3=0) then begin writeln ('System has infinite solutions'); goto M1; end; if det=0 then if (det1<>0) or (det2<>0) or (det3<>0) then begin writeln ('System has no solutions'); goto M1; end; x1:=det1/det; x2:=det2/det; x3:=det3/det; writeln; writeln ('Main determinant: ', det:3:3); writeln ('Determinant X1: ', det1:3:3); writeln ('Determinant X2: ', det2:3:3); writeln ('Determinant X3: ', det3:3:3); writeln; writeln ('Solutions: x1=', x1:3:0, '; x2=', x2:3:0, '; x3=', x3:3:0, ';'); M1: writeln; write ('Press "enter" to exit...'); readln; end; procedure gauss; const m=3; n=3; n2=4; label M1; Type matr=array[1..m, 1..n] of real; matr2=array[1..m, 1..n2] of real; var a:matr; d:matr2; b:array [1..m] of real; c:array [1..n2] of real; i,j,k,t:integer; det, x1, x2, x3:real; begin writeln ('Type in matrix (array "A": )'); writeln; for i:=1 to m do begin for j:=1 to n do read (a[i,j]); readln; end; writeln; writeln ('Type in array "B": '); writeln; for i:=1 to m do begin read (b); end; det:=(((a[1,1])*(a[2,2])*(a[3,3])) +((a[1,2])*(a[2,3])*(a[3,1])) +((a[1,3])*(a[2,1])*(a[3,2])) -((a[1,3])*(a[2,2])*(a[3,1])) -((a[3,2])*(a[2,3])*(a[1,1])) -((a[3,3])*(a[2,1])*(a[1,2]))); readln; if det=0 then begin writeln; writeln ('This system does not has a single solution.'); goto M1; end; for i:=1 to m do for j:=1 to n do d[i,j]:=a[i,j]; for i:=1 to 3 do d[i,4]:=b; t:=-1; for i:=1 to n2 do c:=((d[1,i])/(d[1,1]))*(d[2,1]); if c[1]>0 then if d[2,1]>0 then begin for i:=1 to n2 do c:=c*t; end; if c[1]<0 then if d[2,1]<0 then begin for i:=1 to n2 do c:=c*t; end; for i:=1 to n2 do d[2,i]:=d[2,i]+c; for i:=1 to n2 do c:=((d[1,i])/(d[1,1]))*(d[3,1]); if c[1]>0 then if d[3,1]>0 then begin for i:=1 to n2 do c:=c*t; end; if c[1]<0 then if d[3,1]<0 then begin for i:=1 to n2 do c:=c*t; end; for i:=1 to n2 do d[3,i]:=d[3,i]+c; for i:=2 to n2 do c:=((d[2,i])/(d[2,2]))*(d[3,2]); if c[2]>0 then if d[3,2]>0 then begin for i:=2 to n2 do c:=c*t; end; if c[2]<0 then if d[3,2]<0 then begin for i:=2 to n2 do c:=c*t; end; for i:=2 to n2 do d[3,i]:=d[3,i]+c; for i:=1 to n2 do c:=((d[3,i])/(d[3,3]))*(d[2,3]); if c[3]>0 then if d[2,3]>0 then begin for i:=1 to n2 do c:=c*t; end; if c[3]<0 then if d[2,3]<0 then begin for i:=1 to n2 do c:=c*t; end; for i:=1 to n2 do d[2,i]:=d[2,i]+c; for i:=1 to n2 do c:=((d[3,i])/(d[3,3]))*(d[1,3]); if c[3]>0 then if d[1,3]>0 then begin for i:=1 to n2 do c:=c*t; end; if c[3]<0 then if d[1,3]<0 then begin for i:=1 to n2 do c:=c*t; end; for i:=1 to n2 do d[1,i]:=d[1,i]+c; for i:=2 to n2 do c:=((d[2,i])/(d[2,2]))*(d[1,2]); if c[2]>0 then if d[1,2]>0 then begin for i:=2 to n2 do c:=c*t; end; if c[2]<0 then if d[1,2]<0 then begin for i:=2 to n2 do c:=c*t; end; for i:=2 to n2 do d[1,i]:=d[1,i]+c; for i:=1 to m do begin c:=d[i,i]; for j:=1 to n2 do d[i,j]:=d[i,j]/c; end; {for i:=1 to m do c:=d[i,i]; d[1,1]:=d[1,1]/c[1]; d[1,2]:=d[1,2]/c[1]; d[1,3]:=d[1,3]/c[1]; d[1,4]:=d[1,4]/c[1]; d[2,1]:=d[2,1]/c[2]; d[2,2]:=d[2,2]/c[2]; d[2,3]:=d[2,3]/c[2]; d[2,4]:=d[2,4]/c[2]; d[3,1]:=d[3,1]/c[3]; d[3,2]:=d[3,2]/c[3]; d[3,3]:=d[3,3]/c[3]; d[3,4]:=d[3,4]/c[3]; } x1:=d[1,4]; x2:=d[2,4]; x3:=d[3,4]; writeln; writeln ('Transformed matrix'); writeln; for i:=1 to m do begin for j:=1 to n2 do write (d[i,j]:3:0, ' '); writeln; end; writeln; writeln ('Solutions: x1=', x1:3:0, '; x2=', x2:3:0, '; x3=', x3:3:0, ';'); M1: writeln; write ('Press "enter" to exit...'); readln; end; procedure determinant; const m=3; n=3; label M1; Type matr=array[1..m, 1..n] of real; var a:matr; i,j,k,t:integer; det:real; begin writeln ('Type in matrix'); writeln; for i:=1 to m do begin for j:=1 to n do read (a[i,j]); readln; end; writeln; det:=(((a[1,1])*(a[2,2])*(a[3,3])) +((a[1,2])*(a[2,3])*(a[3,1])) +((a[1,3])*(a[2,1])*(a[3,2])) -((a[1,3])*(a[2,2])*(a[3,1])) -((a[3,2])*(a[2,3])*(a[1,1])) -((a[3,3])*(a[2,1])*(a[1,2]))); writeln ('Determinant is: ', det:3:0); writeln; write ('Press "enter" to exit...'); readln; end; procedure reverse; const m=3; n=3; n2=6; label M1; Type matr=array[1..m, 1..n] of real; matr2=array[1..m, 1..n2] of real; var a:matr; d:matr2; c:array [1..n2] of real; i,j,k,t:integer; det:real; begin writeln ('Type in matrix'); writeln; for i:=1 to m do begin for j:=1 to n do read (a[i,j]); end; writeln; det:=(((a[1,1])*(a[2,2])*(a[3,3])) +((a[1,2])*(a[2,3])*(a[3,1])) +((a[1,3])*(a[2,1])*(a[3,2])) -((a[1,3])*(a[2,2])*(a[3,1])) -((a[3,2])*(a[2,3])*(a[1,1])) -((a[3,3])*(a[2,1])*(a[1,2]))); readln; if det=0 then begin writeln; writeln ('Reversed matrix does not exists for this issue.'); goto M1; end; for i:=1 to m do for j:=1 to n2 do d[i,j]:=0; for i:=1 to m do for j:=1 to n do d[i,j]:=a[i,j]; d[1,4]:=1; d[2,5]:=1; d[3,6]:=1; t:=-1; for i:=1 to n2 do c:=((d[1,i])/(d[1,1]))*(d[2,1]); if c[1]>0 then if d[2,1]>0 then begin for i:=1 to n2 do c:=c*t; end; if c[1]<0 then if d[2,1]<0 then begin for i:=1 to n2 do c:=c*t; end; for i:=1 to n2 do d[2,i]:=d[2,i]+c; for i:=1 to n2 do c:=((d[1,i])/(d[1,1]))*(d[3,1]); if c[1]>0 then if d[3,1]>0 then begin for i:=1 to n2 do c:=c*t; end; if c[1]<0 then if d[3,1]<0 then begin for i:=1 to n2 do c:=c*t; end; for i:=1 to n2 do d[3,i]:=d[3,i]+c; for i:=2 to n2 do c:=((d[2,i])/(d[2,2]))*(d[3,2]); if c[2]>0 then if d[3,2]>0 then begin for i:=2 to n2 do c:=c*t; end; if c[2]<0 then if d[3,2]<0 then begin for i:=2 to n2 do c:=c*t; end; for i:=2 to n2 do d[3,i]:=d[3,i]+c; for i:=1 to m do begin c:=d[i,i]; for j:=1 to n2 do d[i,j]:=d[i,j]/c; end; for i:=3 to n2 do c:=((d[3,i])/(d[3,3]))*(d[2,3]); if c[3]>0 then if d[2,3]>0 then begin for i:=3 to n2 do c:=c*t; end; if c[3]<0 then if d[2,3]<0 then begin for i:=3 to n2 do c:=c*t; end; for i:=3 to n2 do d[2,i]:=d[2,i]+c; for i:=3 to n2 do c:=((d[3,i])/(d[3,3]))*(d[1,3]); if c[3]>0 then if d[1,3]>0 then begin for i:=3 to n2 do c:=c*t; end; if c[3]<0 then if d[1,3]<0 then begin for i:=3 to n2 do c:=c*t; end; for i:=3 to n2 do d[1,i]:=d[1,i]+c; for i:=2 to n2 do c:=((d[2,i])/(d[2,2]))*(d[1,2]); if c[2]>0 then if d[1,2]>0 then begin for i:=2 to n2 do c:=c*t; end; if c[2]<0 then if d[1,2]<0 then begin for i:=2 to n2 do c:=c*t; end; for i:=2 to n2 do d[1,i]:=d[1,i]+c; writeln ('Original matrix was transformed:'); writeln; for i:=1 to m do begin for j:=1 to n2 do write (d[i,j]:3:2, ' '); writeln; writeln; end; writeln ('Reversed matrix is:'); writeln; for i:=1 to m do begin for j:=4 to n2 do write (d[i,j]:3:2, ' '); writeln; writeln; end; M1: writeln; write ('Press "enter" to exit...'); readln; end; begin while True do begin clrscr; textcolor (brown); gotoXY (16,2); write ('/----------------------------------------------------\'); gotoXY (16,19); write ('\----------------------------------------------------/'); z:=3; repeat gotoXY (16,z); write ('|'); z:=z+1 until z=19; z:=3; repeat gotoXY (69,z); write ('|'); z:=z+1 until z=19; gotoXY (24, 4); textcolor (yellow); write ('Main Menu'); textcolor (white); for j2:=1 to c do begin gotoXY (25, 6+j2); write (nameregime[j2]); end; gotoXY (21,15); write ('Choose number of a title and press "enter": '); readln (i2); case i2 of 1: begin clrscr; kvadr; end; 2: begin clrscr; kramer; readln; end; 3: begin clrscr; gauss; end; 4: begin clrscr; determinant; end; 5: begin clrscr; reverse; end; 6: begin clrscr; gotoxy (25,10); write ('Time to self-destruct... :( Bye!'); repeat until keypressed; readln; halt; end; else begin gotoxy (21,17); write ('This section does not exists! Try again.'); for zatr:=1 to 8 do delay (50000); end; end; end; end.
Вопрос: Как сделать чтобы при вводе буквы в матрицу или квадратное уравнение, не выбивало ошибку? (Сообщение отредактировал Lenin 20 июля 2010 9:49)
|
Всего сообщений: 12 | Присоединился: май 2009 | Отправлено: 20 июля 2010 9:48 | IP
|
|
MaxVell
Новичок
|
хто знает помогите а то ничо непонимаю 1. Составить блок-схему алгоритма и программу: 1.1. Дано два действительных числа X и Y. Вычислить выражение min (X, Y). 1.2. Найти максимальное по модулю число в последовательности из трех чисел, произвольно задаются. 1.3. Пусть переменная N принимает значения от 1 до 9. Напечатать значение этой переменной римскими цифрами. 1.4. Протабулюваты функцию Y = f (X) на отрезке [A, B] с шагом H y=sqrt(cos2(x)+1) A 0 B 4п Н п/4
|
Всего сообщений: 1 | Присоединился: июль 2010 | Отправлено: 20 июля 2010 15:09 | IP
|
|
Tank
Новичок
|
Народ всем привет! Помогите пожалуйста кто может! Нужно составить программу в паскале! раздел Процедуры! Вот условие! (если в последовательности а1..аН нет ни одного члена со значением К, то наименьший член заменить на К, иначе оставить без изменения!)
|
Всего сообщений: 1 | Присоединился: август 2010 | Отправлено: 18 авг. 2010 17:44 | IP
|
|
kukuwka31
Новичок
|
Помогите с задачками.. очень надо.. 1. Определить , является ли последовательность символов находящаяся в текстовом файле, идентификатором. 2. в заданной последовательности цифр найти самую длинную последовательность, которая является арифметической прогрессией. Заранее благодарна.. Помогите .. Please..
|
Всего сообщений: 3 | Присоединился: август 2010 | Отправлено: 31 авг. 2010 16:56 | IP
|
|
Galya21
Новичок
|
Помогите пожалуста решить задачу в паскале Ветвлящимся алгоритмом Задача Необходимо ввести номер сезонов времени года и температуру. Должно определиться тепло или холодно
|
Всего сообщений: 1 | Присоединился: сентябрь 2010 | Отправлено: 27 сен. 2010 17:01 | IP
|
|
beermaster01
Новичок
|
народ немогу решыть задачу в паскале, вообще незнаю как решыть..... вот она В заданной строке слова разделены пропуском. Определить, есть ли в ней слова, которые совпадают с последним словом. помогите очень надо... заранеее СПС (Сообщение отредактировал beermaster01 13 окт. 2010 19:27)
|
Всего сообщений: 6 | Присоединился: октябрь 2010 | Отправлено: 13 окт. 2010 19:25 | IP
|
|
asska
Новичок
|
Ребят помогите пожалуйста=) даны 3 действительных числа.Выбрать из них те, которые принадлежат интервалу (1,3)при помощиоператора условия.мой вариант решения program lab3 uses crt; var x,y,z: integer; 1,3: real; begin clrscr writeln('введите x,y,z'); readln(x,y,z); if (x<=3) and (x>=1) then writeln ('x-принадлежит'); if (y<=3) and (y>=1) then writeln ('y- принадлежит'); if (z<=3) and (z>=1) then writeln ('z-принадлежит'); readln; end. преп сказала что все можно и нужно записать одним оператором и привести хотя бы пример когда не принадлежит....В паскале не сильна...и с трудом понимаю свои ошибки=(
|
Всего сообщений: 2 | Присоединился: октябрь 2010 | Отправлено: 15 окт. 2010 21:15 | IP
|
|
VF
Administrator
|
Цитата: beermaster01 написал 13 окт. 2010 21:25 народ немогу решыть задачу в паскале, вообще незнаю как решыть..... вот она В заданной строке слова разделены пропуском. Определить, есть ли в ней слова, которые совпадают с последним словом.
Создаешь массив строк. После этого читаешь заданную строку посимвольно, заполняя сначала первый элемент массива строк. Как только обнаружишь пробел - не копируешь, а переходишь к следующему элементу массива строк. В итоге у тебя получится словарь - в каждом элементе массива слово. После этого последний элемент массива сравниваешь со всеми элементами до него. Если совпадет - значит есть слова, совпадающие с последним.
|
Всего сообщений: 3110 | Присоединился: май 2002 | Отправлено: 16 окт. 2010 9:27 | IP
|
|
Sven
Новичок
|
помогите я нуб в паскале а через пол часа мне надо сдать работу =) задание : для каждой введеной цыфры 0-9 вывести соответсвуещее её название на анл допустим 0-zero 1 -one
|
Всего сообщений: 1 | Присоединился: октябрь 2010 | Отправлено: 25 окт. 2010 8:36 | IP
|
|
Dale
Участник
|
помогите я нуб в паскале а через пол часа мне надо сдать работу =) задание : для каждой введеной цыфры 0-9 вывести соответсвуещее её название на анл допустим 0-zero 1 -one
Элементарная задача на case of . Решение можно сказать написано в любом описании конструкции =)
Code Sample:
... readln(a); case a of 0: writeln('zero'); 1: writeln('one'); ... end; ...
|
Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 26 окт. 2010 6:52 | IP
|
|
|