Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.12.2010, 22:44   #1 (permalink)
Tanyav
Member
 
Регистрация: 04.10.2010
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите пожалуйста в решении задач в Pascal

помогите пожалуйста решить одну из этих задач, заранее спасибо

Задача-1. Дано слово, состоящее не более чем из 6 строчных букв русского алфавита. Получить все неповторяющиеся комбинации буквосочетаний той же длины из букв данного слова, отсортировать их в алфавитном порядке. Указать количество возможных комбинаций.
Задача-3. В некотором тексте проверьте правильность расстановки круглых, квадратных и фигурных скобок.
Задача-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 отличны от нуля) и знак отношения. Получить ответ в виде числового промежутка или числа.
Tanyav вне форума   Ответить с цитированием

Старый 13.12.2010, 22:44
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Проблема уже обсуждалась, рекомендую прочитать информацию по этим ссылкам

Требуется срочная помощь в решении задач по электротехнике
Нужна помощь в решении двух задач

Старый 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 вне форума   Ответить с цитированием
Старый 14.12.2010, 13:41   #3 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Насчёт пятой задачи - а при чём тут, собственно, программирование на Pascal-е? Нужно вычислить на бумаге промежутки и выдать из в виде окончательного решения. Разве что можно рассмотреть вариант, когда пользователь вводит значения a, b и знак отношения, тогда задача может иметь подобное решение:
Код:
program ner;
var
a,b,x: real;
s: char;
p:integer;
begin
writeln('Enter the values of the constants a, b');
readln(a,b);
if (a<>0) and (b<>0) 
  then begin x:=-b/a;
         writeln('Enter symbol relationships');
         readln(s);
         p:=ord(s);
         case p of
         60: writeln('x less than ',x:1:4);
         62: writeln('x is greater than ',x:1:4);
         61: writeln('x is ',x:1:4)
         else writeln('This is not a sign relationship')
         end; end
      else writeln('constant need not be equal to 0');
readln
end.
Данная программа обсчитывает обычные отношения >, <, = и не обрабатывает составные.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 14.12.2010, 14:37   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

На всякий случай - решение третьей задачки отредактировал с учетом проверки вложенности.
Позже, правда, сообразил - программа отрабатывает не все возможные ситуации. Она справляется с прямой однократной вложенностью:
{...[..(.....)..]...}
и даже с такой:
{...[..(...)..(...)...]..}
Но вот если, например, так:
{...[...(..)...[...]..]..)
или так:
{...[..(...)...(...)..]..[..(..)....]..},
то увы... И как это универсально алгоритмизировать - не соображу. Уж извините - чем богаты...
Vladimir_S вне форума   Ответить с цитированием
Старый 14.12.2010, 22:30   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ан нет - ведь добил-таки! Заело. Исправления в очередной раз внесены, и теперь эта сволочная программа отрабатывает любые ситуации. Вот!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 15.12.2010, 12:33   #6 (permalink)
Tanyav
Member
 
Регистрация: 04.10.2010
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо Вам огромное!!!!
Tanyav вне форума   Ответить с цитированием
Старый 15.12.2010, 12:46   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Tanyav Посмотреть сообщение
Спасибо Вам огромное!!!!
Таня, а этого хватит или надо обязательно всё? Я это к тому, что первая задачка - на вскидку довольно "крутая". Как-то и не знаю, получится ли заняться.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:39.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.