четверг, 10 января 2013 г.

9 "Г" СРОЧНО ПОВТОРИТЕ РАБОТУ С ФАЙЛАМИ В Delphi


  Пример  (две) задачи с файлами 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.


Словарь (291)
Дан некоторый набор букв и словарь. Ваша задача - подсчитать, сколько различных слов из словаря можно составить из этих букв.
Входные данные
В первой строке файла 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.