Пример (две) задачи с файлами Delphi
“Нумеролог”
Чтобы предсказать судьбу
человека, нумеролог берет время жизни человека в секундах, затем складывает все
цифры этого числа. Если полученное число состоит более чем из одной цифры,
операция повторяется, пока в числе не останется одна цифра. Затем по полученной
цифре и числу операций, необходимых для преобразования числа в цифру нумеролог
предсказывает судьбу человека. Нумеролог плохо умеет считать, а числа, с
которыми он работает, могут быть очень большими. Напишите программу, которая бы
делала все расчеты за него.
Входные данные
Входной файл INPUT.TXT содержит число N – время жизни человека в
секундах (1 ≤ N ≤ 101000).
Выходные данные
В выходной файл OUTPUT.TXT выведите два числа через пробел:
полученную цифру из числа N и число преобразований.
Примеры(Input - Output).
1 - 1 0
10 - 1 1
99 - 9 2
Попробуйте сами решить, только верхние 4 строки можно подсмотреть....
Решение
var s:string; i,k,n:longint;
f1,f2:text;
begin
assign(f1,'Input.txt');
reset(f1);
read(f1,s);
close(f1);
k:=0; n:=0;
while length(s)>1 do begin
for i:=1 to length(s) do begin
inc(k,strtoint(s[i]));
{складывем все элементы строки s в число
k}
end;
inc(n);
s:=''; {обнуляем строку s для создания новой}
while k>0 do begin
s:=s+inttostr(k mod 10); k:=k div 10; {создаем
новую строку s из всех цифр числа k}
end;
end; {и так пока
строка s не станет единичной длины}
assign(f2,'Output.txt');
rewrite(f2);
write(f2,s[1],' ',n); close(f2);
end.
Дан некоторый набор букв и словарь.
Ваша задача - подсчитать, сколько различных слов из словаря можно составить из
этих букв.
Входные данные
В первой строке файла INPUT.TXT
записано число N - количество слов в словаре (0 <= N <= 1000). В
следующих N строках файла записано по одному слову из словаря. Слова содержат
от 1 до 10 маленьких латинских букв. Все слова в словаре различны. В последней
строке файла записан набор букв (не более 100 букв).
Выходные данные
Запишите в файл OUTPUT.TXT
количество различных слов из словаря, которые можно составить из заданного
набора букв.
Примеры
№
|
INPUT.TXT
|
OUTPUT.TXT
|
1
|
7
ant bee cat dog ewe fly gnu bew |
0
|
2
|
7
bee fly cat dog ant ewe gnu tancugd |
3
|
Program z291;
{После считывания числа n, n слов
и строки s, в которой записаны все
символы, которые можно использовать в словах. Затем заполняем массив mn, определяя сколько раз может встречаться
буква в слове (если в строке s нет
какого-то символа, то 0). После этого проверяем составлено ли каждое слово из
разрешенных символов, используя функцию Check(s
: string) : boolean. В ней массив mn1=mn,
а затем проходим все символы в слове, уменьшая количество использованных
символов в mn1}
var i,n,r,l
: integer;
a : array of string;
s : string;
j : char;
mn,mn1 : array['a'..'z'] of integer;
function
Check(s : string) : boolean;
var i,j :
integer;
begin
result:=true;
mn1:=mn;
for i:=1 to Length(s) do
if mn1[s[i]]>0 then dec(mn1[s[i]]) else
result:=false;
end;
begin
reset(input,'input.txt');
rewrite(output,'output.txt');
readln(n);
r:=0;
for j:='a' to 'z' do mn[j]:=0;
if n<>0 then
begin
SetLength(a,n+1);
for i := 1 to n do readln(a[i]);
readln(s);
if s<>'' then
begin
for i:=1 to Length(s) do inc(mn[s[i]]);
for i:=1 to n do
if Check(a[i]) then inc(r);
end;
writeln(r);
end;
end.