Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на Pascal. Форум 3.
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
Модераторы: paradise, KMA
  

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

Отправка ответа:
Имя пользователя   Вы зарегистрировались?
Пароль   Забыли пароль?
Сообщение

Использование HTML запрещено

Использование IkonCode разрешено

Смайлики разрешены

Опции отправки

Добавить подпись?
Получать ответы по e-mail?
Разрешить смайлики в этом сообщении?
Просмотреть сообщение перед отправкой? Да   Нет
 

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]

Форум работает на скрипте © Ikonboard.com