Цитата:
Сообщение от 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 по Московскому времени сможет подсказать(можно и нагуглить) мне в аське по паскалю.
|