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