Страница 1 из 1

Помогите пожалуйста решить задачи на паскале

Добавлено: 08 мар 2008, 12:49
A13X
Вот задачи, которіе надо решить. Помогите пожалуйста ;)
1)Дано координаты (целые от 1 до 8) двух разных полей шахматной доски. Если ферзь за один ход может перейти из одной части поля на другую, вывести логическое значение True, иначе вывести значение False.

2)Дан файл, каждая строка которого имеет даты в формате дд.мм.гггг. Создать новый файл, в котором даты будут записаны в порядке возростания.

3)http://static.diary.ru/userdir/6/4/7/0/ ... 172950.jpg

Re: Помогите пожалуйста решить задачи на паскале

Добавлено: 08 мар 2008, 19:14
A13X
Очень нужны эти задачи, а то не допустят к экзамену :mad:

Re: Помогите пожалуйста решить задачи на паскале

Добавлено: 08 мар 2008, 20:11
Vovchik
В задаче №3 число D задано ???

Re: Помогите пожалуйста решить задачи на паскале

Добавлено: 09 мар 2008, 16:34
Medved
#1
[syntax='Delphi']
program lalala;
var x1,y1,x2,y2:integer;
begin
read(x1,y1,x2,y2);
if (x1=x2)or(y1=y2)or( abs(x1-x2) = abs(y1-y2)) then writeln('true') else writeln('false');
end.
[/syntax]

#2
[syntax='Delphi']
program lalala;
const maxn=1000;
fin='file.in';
fout='file.out';
type date=record d,m,y:integer; end;
dates=array[1..maxn] of date;
var d:dates;
i:integer;

procedure swp(a,b:date);
var k:date;
begin
k:=a;
a:=b;
b:=k;
end;

procedure readdates;
var l,c:string;
inf:text;
begin
fillchar(d,sizeof(d),0);
assign(inf,fin);
reset(inf);
i:=1;
while not eof(inf) do
begin
readln(inf,l);
c:=l[1]+l[2];
val(c,d.d);
c:=l[4]+l[5];
val(c,d.m);
c:=l[7]+l[8]+l[9]+l[10];
val(c,d.y);
inc(i);
end;
close(inf);
end;

procedure sortdates;
var k,l:integer;
begin
for k:=1 to n-1 do
for l:=k+1 to n do
if (d[k].y>d[l].y)or((d[k].y=d[l].y)and((d[k].m>d[l].m)or((d[k].m=d[l].m)and(d[k].d>d[l].d))) then
swp(d[k],d[l]);
end;
procedure writeinfile;
var outf:text;
k:integer;
begin
assign(outf,fout);
rewrite(outf);
for k:=1 to i do
writeln(outf,d[k].d,'.',d[k].m,'.',d[k].y);
close(outf);
end;

begin
readdates;
sortdates;
writeinfile;
end.[/syntax]

Re: Помогите пожалуйста решить задачи на паскале

Добавлено: 09 мар 2008, 16:42
Medved
#3
[syntax='Delphi']
program lalala;
var d:real;

function next(k,a1,a:real);
begin
if d<abs(a-a1) then writeln(k) else next(k+1,a,(a1+a)/2);
end;

begin
writeln('Enter D');
readln(d);
next(2,1,2);
end.[/syntax]

Re: Помогите пожалуйста решить задачи на паскале

Добавлено: 09 мар 2008, 16:42
Medved
Задачи- делать нечего. Any questions?

Re: Помогите пожалуйста решить задачи на паскале

Добавлено: 11 мар 2008, 11:21
Хыиуду
#1. Код, недоступный пониманию :)
if abs(x1-x2)*abs(y1-y2) in [0, sqr(x1-x2)] then result:=true else result:=false;