Показать сообщение отдельно
Старый 14.12.2010, 11:17   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Tanyav Посмотреть сообщение
Задача-1. Дано слово, состоящее не более чем из 6 строчных букв русского алфавита. Получить все неповторяющиеся комбинации буквосочетаний той же длины из букв данного слова, отсортировать их в алфавитном порядке. Указать количество возможных комбинаций.
Задачка, безусловно, интересная, но очень не простая. Возьмусь, правда быстро не обещаю. И вопрос: понимает ли Ваш Паскаль формат QWord? С таким форматом упорядочение по алфавиту было бы гораздо проще.
Цитата:
Задача-3. В некотором тексте проверьте правильность расстановки круглых, квадратных и фигурных скобок.
Как я понимаю, критерием правильности расстановки является совпадение количества открывающих и закрывающих скобок каждого типа и их правильная вложенность. Алгоритм: организуется шесть счетчиков, а потом идет посимвольный перебор всего текста с подсчетом количества скобок. В конце сравниваются результаты подсчета для различного вида скобок. Затем проверяется вложенность, то есть правильность чередования открывающих и закрывающих скобок каждого типа.
Код:
VAR
 f:TEXT;
 Q1o,Q1c,Q2o,Q2c,Q3o,Q3c:WORD;
 Ch:Char;
 Brack,Brack1:ARRAY[1..255] of Char;
 Nbr,Nbr1,i,j:BYTE;
 Incor:Boolean;
BEGIN
 Assign(f,'D:\xxx');
 ReSet(f);
 Nbr:=0; {full number of brackets}
 Q1o:=0;
 Q1c:=0;
 Q2o:=0;
 Q2c:=0;
 Q3o:=0;
 Q3c:=0;
 Repeat
  Read(f,Ch);
  if (Ch='(') or (Ch=')') or (Ch='[') or (Ch=']') or (Ch='{') or (Ch='}') then
   begin
    Inc(Nbr);
    Brack[Nbr]:=Ch;
   end;
  if Ch='(' then Inc(Q1o);
  if Ch=')' then Inc(Q1c);
  if Ch='[' then Inc(Q2o);
  if Ch=']' then Inc(Q2c);
  if Ch='{' then Inc(Q3o);
  if Ch='}' then Inc(Q3c);
 Until EoF(f);
 Close(f);
 Brack1:=Brack;
 Nbr1:=Nbr;
 If (Q1o<>Q1c) or (Q2o<>Q2c) or (Q3o<>Q3c) then
  begin
   WriteLn('Incorrect:');
   if Q1o<>Q1c then
    WriteLn(Q1o,' "(" and ',Q1c,' ")"');
   if Q2o<>Q2c then
    WriteLn(Q2o,' "[" and ',Q2c,' "]"');
   if Q3o<>Q3c then
    WriteLn(Q3o,' "{" and ',Q3c,' "}"');
  end
 else
  begin
   i:=0;
   Repeat
    Inc(i);
    Incor:=true;
    If ((Brack[i]='(') and (Brack[i+1]=')')) or
       ((Brack[i]='[') and (Brack[i+1]=']')) or
       ((Brack[i]='{') and (Brack[i+1]='}')) then
     begin
      Incor:=false;
      for j:=i+2 to Nbr do
       Brack[j-2]:=Brack[j];
      Dec(Nbr,2);
      i:=0;
     end;
   Until (Nbr=0) or (i=Nbr-1);
   If Incor then
    begin
     WriteLn('Incorrect: the order of brackets is wrong:');
     for i:=1 to Nbr1 do
      Write(Brack1[i]);
     WriteLn;
    end
   else
    Writeln('Correct');
  end;
 ReadLn;
END.
Здесь предполагается, что анализируемый текст находится в файле по имени xxx в корневом каталоге диска D: . Имя файла и путь можно, конечно, изменить.
Цитата:
Задача-4. Один дотошный болельщик по время волейбольного матча заметил интересную закономерность: сначала K (K – любое натуральное) розыгрышей выиграла первая команда, потом K+1 розыгрыш достался второй команде, далее опять первая выиграла, но уже K+2 розыгрыш и т.д. Определить счет, с которым закончился матч, и счет по партиям.
Упрощенные правила игры: матч состоит из партий, победа присуждается команде, первой выигравшей в трех партиях. Чтобы победить в партии, необходимо набрать 25 очков. Если счет равный (25:25), то партия продолжается до тех пор, пока разница в счете не станет равной 2. Не использованные розыгрыши в одной партии автоматически переходят в следующую.
Например, если счет 17:19 и первая команда выигрывает 19 розыгрышей, то счет становится 25:19, а 12 очков переходят для первой команды в следующую партию.
В этих спортивных системах, да еще с примесью жульства, без поллитры не разобраться, а я без повода не пью.
Цитата:
Задача-5. Дано выражение ax+b?0. Задать значения a и b (a, b отличны от нуля) и знак отношения. Получить ответ в виде числового промежутка или числа.
Совсем ничего не понял.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070