( Вход | Регистрация | Поиск )

Помощь с pascal`ем, решение задач
Дата обновления: 17.12.2010 - 23:18, перейти к новому сообщению

·main
Группа: Пользователи

Сообщений: 146
Люди мне надо решить восемь задач в паскале, если есть кто в нем рулит помогите, а то я сам не успею.


Ответов(30 - 39)

·scorpio
Группа: СуперМодераторы

Сообщений: 8.029
QUOTE(alex_p25 @ 14.03.2007 - 14:27)
Знал бы алгоритмы - код бы я сам написал.



Задачки уровня школьной олимпиады... не столько программирование, сколько посидеть подумать... cool.gif

Это срочно? Или есть время подумать?


·ЭЖД
Группа: Наши Люди

Сообщений: 11.935
ph34r.gif 1 задача
program odin;
var i,n,k,udar:byte;
begin
udar:=0;
for i:=1 to n do begin k:=k-2; udar:=udar+1; if k<1 Then udar:=udar+1 end;
writeln('n k');
for i:=1 to n do write('0');
for i:=1 to n-k do write('1');
assign(f,exit.txt);
write(f,udar);
close(f)
end.


·Alex Ander
Группа: Наши Люди

Сообщений: 565
Время есть. Пара дней как минимум.


·_Dimas_
Группа: Пользователи

Сообщений: 71
Первая задачка
я так понял за раз отрубаются как минимум 2 головы, а максимум не ограничен.

CODE

program Gorynych;
var
 n, k, Udar: Integer;
 Golovy: string; { Ограничение на 255 голов }
 i, j, l: Integer;
 f: Text;
begin
 Assign(f, 'Input.txt'); Reset(f);
 ReadLn(f, n, k); ReadLn(f, Golovy);
 Close(f);
 if (Length(Golovy) < n) and (n > 2) then halt
 else Golovy := Copy(Golovy, 1, n);
 Assign(f, 'Output.txt'); Rewrite(f);
 Udar := 0; i := 1;
 WriteLn(f, Udar:3, '  ', Golovy);
 while i <= n do begin
   j := 1;
   if Golovy[i] = '0' then begin {Если встретилась больная голова}
     Golovy[i] := '1';           {Текущая отрубается в любом случае}
     {Считаем больные головы}
     while (i + j <= n) and (Golovy[i + j] = '0') do j := j + 1;
     {Если следующая(ие) больные, все отрубаются }
     if j > 1 then for l := i + 1 to i + j do Golovy[l] := '1';
     {Если следующая здоровая или эта последняя}
     if j = 1 then begin
       if i + 1 <= n then begin  {Если эта не последняя}
         Golovy[i + 1] := '0';   {то следующая отрубается}
         if i + 1 < n then       {Если следующая не последняя}
           if Golovy[i + 2] = '1' then {Если послеследующая здоровая}
             Golovy[i + 2] := '0'      {тоже отрубается}
       end else begin            {Если эта все-таки последняя голова}
         Golovy[i - 1] := '0';         {две предыдущие отрубаются}
         Golovy[i - 2] := '0';
         j := -2;
       end;
     end;
     Udar := Udar + 1;
     WriteLn(f, Udar:3, '  ', Golovy);
   end;
   i := i + j;
 end;
 Close(f);
end.



·_Dimas_
Группа: Пользователи

Сообщений: 71
Третья
Если получается квадрат, диагональ остается на месте, в остальных случаях на месте остаются вроде тока первый да последний
CODE

program Teatr;
var
 n, m: Integer;
 f: Text
begin
 Assign(f, 'Input.txt'); Reset(f);
 ReadLn(f, n, m); Close(f);
 if (n < 1) or (n > 109) or (m < 1) or m > 109) then halt;
 Assign(f, 'Output.txt'); Rewrite(f);
 if m = n then Write(f, n) else Write(f, 2)
 Close(f);
end.



·_Dimas_
Группа: Пользователи

Сообщений: 71
Четвертая задача читая геометрия, школьная программа.
Присоединённое изображение
AN = NM = MC по условию
Стороны AB и BC расчитываются из условия задачи.
По сторонам AB BC и углу между ними находишь AC.
Если не ошибаюсь, то по трем сторонам можно узнать углы треугольника (CAB и ACB).
Дальше составляешь систему.
AN = NM = MC = X
CN = Y
1 уравнение
По двум сторонам AC, AN(X) и углу между ними находишь CN(Y)
2 Уравнение
По двум сторонам CB, NB(AB-X) и углу между ними находишь CN(Y)
Вроде должно срабротать.


Вторая На бумажке вручную вроде понял как решать, а вот алгоритм в голову не приходит


·ЭЖД
Группа: Наши Люди

Сообщений: 11.935
ph34r.gif AC можно найти без углов smile.gif координаты A и С мы знаем smile.gif
AC=sqrt(sqr(XC-XA)+sqr(YC-YA))


·_Dimas_
Группа: Пользователи

Сообщений: 71
Возможно, не силен в геометрии, написал то что помнил.
Видать хорошо вдалбивали знания smile.gif (класс 5 - 6 был)


По второй задаче
Здесь вроде как комбинаторика
Если входной файл такой
aaa 2
bbb 1
ccc 2
ddd 1

то для первого игрока здесь возможны 3 варианта
- 0 1 1
1 - х х
0 х - х
0 х х -

- 1 0 1
0 - х х
1 х - х
0 х х -

- 1 1 0
0 - х х
0 х - х
1 х х -

далее аналогично делается для второго игрока, отталкиваясь от каждого варианта выигрышей первого игрока

- 0 1 1
1 - 0 0
0 1 - х
0 1 х -
в даном случае 1 вариант

- 1 0 1
0 - 1 0
1 0 - х
0 1 х -

- 1 0 1
0 - 0 1
1 1 - х
1 0 х -
дальше два варианта

И так далее, а потом все и подсчитывается

Только может можно сразу все посчитать без всяких переборов?
Если нет то пытаться програмно описать весь этот перебор.




·main
Группа: Пользователи

Сообщений: 146
народ, вот прошло пол года, а точнее один семестр и мне снова нужна ваша помощь:). На этот раз програмки простые, надеюсь не оставите без внимания.
5 заданий в прикрепленом вордовском файле.


·hanka
Группа: Заблокированные

Сообщений: 26
Твой софтовый форум

Название: Захват 2:Темная территория

Оригинальное название: Under siege 2. Dark Territory
Год выхода: 1995
Жанр: Боевик
Режиссер: Джефф Мерфи /Geoff Murphy/

Группа террористов-профессионалов, вместе с безумным изобретателем, уволенным из Пентагона, захватила поезд для того, чтобы развернуть на нем передвижной пункт управления засекреченным военным спутником США, на котором установлено лучевое оружие огромной разрушительной силы, и грозят взрывом на Восточном побережье США. Случайно оказавшийся среди пассажиров морской пехотинец Кейси Рейбек изменил их планы.
В ролях: Стивен Сигал /Steven Seagal/, Эрик Богосян /Eric Bogosian/, Кэтрин Хайгл /Katherine Heigl/, Эверетт МакГилл /Everett McGill/, Моррис Честнат /Morris Chestnut/, Ник Манкузо /Nick Mancuso/
Выпущено: Warner Bros.
Продолжительность: 1:34
Язык: Русский перевод

Формат: DivX
Качество: DVDRip
Видео: 656x400 (1.64:1), 25 fps, DivX ;-) MPEG-4 Fast-Motion ~900 kbps avg, 0.14 bit/pixel
Звук: 48 kHz, MPEG Layer 3, 2 ch, ~128.00 kbps avg
Размер: 697 MB
Партов: 8