Показать сообщение отдельно

  #25  
Старый 04.12.2009, 13:49
banana
Участник форума
Регистрация: 04.03.2009
Сообщений: 298
С нами: 9046285

Репутация: 229
По умолчанию

Цитата:
Сообщение от ReduKToR  
он офигела
Убило...



PS: В общем я узнал какие там алгоритмы в основном затрагиваются:
1. Числа Фиббоначчи.
Задание:
Код:
Последовательно цифр, длиною не менее 3х преобразуется след. образом: 
* Для каждой цифры, начиная с третьей, вычисляется сумма предыдущих двух цифр;
* Если последняя цифра суммы больше этой цифры, то она заменяет собой в последовательности эту цифру.

Написать программу осуществляющую это преобразование.

Вход. даные: INPUT.TXT содержит единственную строчку, в которой записаны  цифры исходной последовательности. Количество цифр в последовательности не менее 3 и не более 10^1000.

Выход. данные: OUTPUT.TXT содежит получившуюся в рез-те последовательность.

Пример данных:
INPUT - 123456328456
OUTPUT - 123586428459
Моя наработка:
Код:
Program termometr;
uses crt;
const n=15;
type f=file of integer;
var a:array [1..n] of integer;
input,output:f;
i:integer;

 procedure term;
  var i,i1,i2:integer;
   begin
   i1:=a[i-1];
   i2:=a[i-2];
   for i:=3 to n do begin
    a[i]:=i1+i2;
    i:=i+1;
   end
 end;

 procedure pechat;
  begin
   if n>3 then begin
   write (output,a[i]);
   term;
  end
end;

begin
clrscr;
Assign (input, 'input.txt');
Assign (output, 'output.txt');
Reset (input);
Rewrite (output);
Read (input,a[i]);
i:=3;
pechat;
Close (input);
Close (output);
end.
Оно не пашет, вроде где-то зацикливается. Требуется дописать её. Кто может - сделайте пожалуйста, если что-то новое вводите - пожалуйста с комментариями.

2. Перебор поля, путём прохода конем. Подобное про блох недавно кто-то просил решить и кто-то дал код:

Код:
Program Blochi;
const
InpFile = 'input.txt';
Outfile = 'output.txt';
const
Max = 250;
type
Field = Array [-1..Max+2,-1..Max+2] of Byte;
Steps = array [1..8] of -2..2;
const
x:Steps = (-1,1,2,2,1,-1,-2,-2);
y:Steps = (-2,-2,-1,1,2,2,1,-1);
var
n,m,Yk,Xk,q:integer;
f:field;
procedure detectfield;
var
i,j,k,step:integer;
waschanges:boolean;
begin
fillchar(f,Sizeof(f),0);
for i:=1 to 8 do F[Yk+y[i],Xk+x[i]]:=1;
waschanges:=true;
step:=1;
while waschanges do begin
waschanges:=false;
for i:=1 to n do
for j:=1 to M do if f [i,j] = step then
for k:=1 to 8 do
if f[i+y[k],j+x[k]]=0 then begin
f[i+y[k],j+x[k]]:=step+1;
waschanges:=true;
end;
inc(step);
end;
f[yk,xk]:=0;
end;

Procedure initfield;
var
i,y2,x2:integer;
answer:longint;
nosolution:boolean;
begin
assign(input,inpfile);
reset(input);
assign(output,outfile);
rewrite(output);
answer:=0;
nosolution:=false;
read(n,m,yk,xk,q);
if q>0 then detectfield;
for i:=1 to q do begin
read(y2,x2);
if f [y2,x2]=0 then if (y2<>yk)or(x2<>xk) then nosolution:=true;
answer:=answer+f[y2,x2];
end;
if nosolution then writeln(-1)
else writeln(answer);
close(input);
close(output);
end;

begin
initfield;
end.
Требуется максимально пояснить (комментариями), а по возможности и упросить код.

3. Работа со строками. К примеру:

Код:
Напишите прогу, которая вводит с клавы слово длиной не более 14 букв и выводит на экран кол-во разных анаграмм, которые могут получться из этого слова. Анаграммой слов наз-тся любая перестановка всех букв слова.

Пример: из слова СОЛО может получиться 12 анаграмм: СОЛО, ЛОСО,ОСЛО, ОЛСО, ОСОЛ, ОЛОС, СЛОО, ЛСОО, ООЛС, ЛООС, СООЛ.

Вход. данные: INPUT.TXT содержит единственную строчку, в которой записано исходное слово. Кол-во символов в последовательности не менее 3 и не более 256.

Выход. данные: OUTPUT.TXT содержит число, опред. кол-во получившихся анаграмм.

Пример:
INPUT - УУУУУ
OUTPUT - 1

INPUT - ЛЕС
OUTPUT - 6

INPUT - БАОБАБ
OUTPUT - 60
Требуется код. Заранее спасибо за всё.

4. Работа с массивами. Тут я сам попробую разобраться.

Всё нужно сделать сегодня до 9 вечера. Еще раз заранее говорю спасибо. Также необходим человек, который завтра с 8.00 до 13.00 по Московскому времени сможет подсказать(можно и нагуглить) мне в аське по паскалю.
 
Ответить с цитированием