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

Ответить
A13X
Сообщения: 2
Зарегистрирован: 08 мар 2008, 12:42

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

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

3)http://static.diary.ru/userdir/6/4/7/0/ ... 172950.jpg
A13X
Сообщения: 2
Зарегистрирован: 08 мар 2008, 12:42

Очень нужны эти задачи, а то не допустят к экзамену :mad:
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

В задаче №3 число D задано ???
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

#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]
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

#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]
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

Задачи- делать нечего. Any questions?
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

#1. Код, недоступный пониманию :)
if abs(x1-x2)*abs(y1-y2) in [0, sqr(x1-x2)] then result:=true else result:=false;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить