IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
Closed Topic Открыть новую тему 
> Найти в исходном символьном массиые слово РАК ...
Анна
сообщение 22.11.2005 16:59
Сообщение #1


Гость






Код
Найти в исходном символьном массиые слово РАК и заменить его в результирующем массиве словом ЩУКА без потери символов

Вот задание, а вот что у меня получилось а алгоритмом, не знаю правильно или нет, порпавьте если что не так.

Почему-то у Вас файлы не прикрепляются sad.gif, пришлось попросить помощи
Вот ссылка на мой алгоритм: http://ork.53535.ru/Drawing2.vsd
 К началу страницы 
+ Ответить 
volvo
сообщение 22.11.2005 17:05
Сообщение #2


Гость






Анна, так не пойдет... Что такое VSD файл? CorelDraw? В правилах мы просим оффисные файлы не выкладывать, а уж третьесторонние программы так и подавно...

Неужели нельзя прикрепить изображение в распространенном формате? Вот у меня, например, нет на компьютере CorelDraw... Я думаю, кстати, что не только у меня...
 К началу страницы 
+ Ответить 
hiv
сообщение 22.11.2005 17:24
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Это в формате MS Visio. Там к стати есть такой вариант: файл сохранить как и выбрать PNG формат. Вот картинка:

Прикрепленное изображение


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анна
сообщение 22.11.2005 17:43
Сообщение #4


Гость






To: volvo
VSD - это расширение файлов visio, я в ней составляла алгоритм, он большой, поэтому в одну картинку поместить не могу sad.gif Вот в с раширением *doc http://ork.53535.ru/drawling.doc по-другому не могу sad.gif
 К началу страницы 
+ Ответить 
Анна
сообщение 22.11.2005 20:22
Сообщение #5


Гость






Ну как алгоритм? nea.gif
 К началу страницы 
+ Ответить 
Selena
сообщение 22.11.2005 20:36
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Женский
Реальное имя: Ольга

Репутация: -  0  +


Я давным давно делала что-то похожее. Вот посмотри.


Прикрепленные файлы
Прикрепленный файл  ________10_2.doc ( 100.5 килобайт ) Кол-во скачиваний: 205
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анна
сообщение 22.11.2005 21:49
Сообщение #7


Гость






To: Selena
Спасибо, но у нас совсем разные алгоритмы. И кстатит, какое у тебя задание было? Посчитать сколько раз встречается слово "стоимостью"? и потом домножить на "2" ?


ps Мне алгоритм мой нужно проверить ... правильный он или нет? Никто не разбирается что ли? sad.gif
 К началу страницы 
+ Ответить 
Анна
сообщение 22.11.2005 21:51
Сообщение #8


Гость






Да и ещё, у тебя в курсовой нет описания алгоритма ... сколько тебе за неё хоть поставили?
 К началу страницы 
+ Ответить 
Анна
сообщение 23.11.2005 15:52
Сообщение #9


Гость






Помогите укоратить программу, сделать её попроще, но чтобы смысл не терялся.



Program Kursovik;
var
  i, j, x, k, n : Integer;
  a, b : array[1..1000] of Char;
  s: string;
begin
writeln('Vvedite stroku: ');
readln(s);
  i:=1; j:=1; k:=0; x:=0;
  repeat
  x := x + 1;
  a[x]:=s[x];

  until x = length(s);
  while not (i > x) do
  begin
  if not (( ( ord(a[i-1])>159 ) and  (ord(a[i-1])<176) ) or ((ord(a[i-1])>223) and  (ord(a[i-1])<240))) then
    if a[i] = 'р' then
      if a[i+1] = 'а' then
        if a[i+2] = 'к' then

            if not ((( ord(a[i+3])>159 ) and  (ord(a[i+3])<176) ) or ((ord(a[i+3])>223) and  (ord(a[i+3])<240))) then
              begin

              b[j] := 'щ';
              b[j+1] := 'у';
              b[j+2] := 'к';
              b[j+3] := 'а';


              i := i + 3;
              j := j + 4;
              end
  else begin b[j] := a[i]; i := i + 1; j := j + 1; end
    else begin b[j] := a[i]; i := i + 1; j := j + 1; end
      else begin b[j] := a[i]; i := i + 1; j := j + 1; end
        else begin b[j] := a[i]; i := i + 1; j := j + 1; end
          else begin b[j] := a[i]; i := i + 1; j := j + 1; end

  end;
  write('Resoult massiv:');
  repeat
  k := k + 1;
  write(b[k]);
  until k = j;
readln;
end.



Помогите упростить вот эти строчки:
not (( ( ord(a[i-1])>159 ) and  (ord(a[i-1])<176) ) or ((ord(a[i-1])>223) and  (ord(a[i-1])<240)))
 К началу страницы 
+ Ответить 
volvo
сообщение 23.11.2005 16:26
Сообщение #10


Гость






not (
  ((ord(a[i-1])>159) and  (ord(a[i-1])<176))
  or
  ((ord(a[i-1])>223) and  (ord(a[i-1])<240))
)

аналогично
not (
  a[i-1] in [#160 .. #175, #224 .. #239]
)
, если я не ошибаюсь...
 К началу страницы 
+ Ответить 
klem4
сообщение 23.11.2005 16:38
Сообщение #11


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Хмм .. а во так интересно можно сделать ?

uses crt;
var
   s : array[1..80] of char;
   temp : string;
   n,i,p : byte;

   begin

   clrscr;

   write('n='); readln(n);

   temp := '';

   for i := 1 to n do begin
      readln(s[i]);
      temp := temp + s[i];
   end;

   writeln;

   writeln(temp);

   p := pos('рак', temp);
   if p = 0 then writeln('N0')
    else begin

       delete(temp, p,3);
       insert('щука',temp, p);

       for i := 1 to length(temp) do
        s[i] := temp[i];

       inc(n);

    end;

  writeln;

  for i := 1 to n  do
   write(s[i]);

  readln;
end.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 23.11.2005 17:19
Сообщение #12


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Еще вариант :

uses crt;
const
   fish : array [0..3] of char = ('щ','у','к','а');
var

   s : array[1..80] of char;
   n,i,j : byte;

begin

   clrscr;

   write('n='); readln(n);

   FillChar(s, sizeof(s),0);

   for i := 1 to n do readln(s[i]);

   writeln;

   for i := 1 to n do write(s[i]);

   {$r-}
   i := 1;

   while(i<=n-2) do
    if (s[i] = 'р') and (s[i+1]='а') and (s[i+2]='к') then begin
       for j := n + 1 downto i do s[j] := s[j-1];
       for j := 0 to 3 do
        s[i+j] := fish[j];
        inc(i,4);
        inc(n);
    end
     else inc(i);

   writeln;

   for i := 1 to n do write(s[i]);

   readln
end.



Сообщение отредактировано: klem4 - 23.11.2005 17:25


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Selena
сообщение 23.11.2005 19:56
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Женский
Реальное имя: Ольга

Репутация: -  0  +


Это не курсовая была, а лабораторная. Отн ас не требуют писменого описания алгоритма. Мы рассказываем устно. А получила я 4.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анна
сообщение 23.11.2005 20:53
Сообщение #14


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


Вот, закончила работу над алгоритмом, а также программой, вот что получилось.
БОЛЬШАЯ просьба: подправьте меня, если что не так ...



Program Kursovik;
var
  i, j, x, k, n : Integer;
  a, b : array[1..1000] of Char;
  s: string;
begin
writeln('Введите строку: ');
readln(s);
  i:=1; j:=1; k:=0; x:=0;
  repeat
  x := x + 1;
  a[x]:=s[x];

  until x = length(s);
  while not (i > x) do
  begin
  if not (a[i-1] in [#160.. #175, #224..#239])   then
    if a[i] = 'р' then
      if a[i+1] = 'а' then
        if a[i+2] = 'к' then

           if not (a[i+3] in [#160.. #175, #224..#239])   then
              begin

              b[j] := 'щ';
              b[j+1] := 'у';
              b[j+2] := 'к';
              b[j+3] := 'а';


              i := i + 3;
              j := j + 4;
              end
  else begin b[j] := a[i]; i := i + 1; j := j + 1; end
    else begin b[j] := a[i]; i := i + 1; j := j + 1; end
      else begin b[j] := a[i]; i := i + 1; j := j + 1; end
        else begin b[j] := a[i]; i := i + 1; j := j + 1; end
          else begin b[j] := a[i]; i := i + 1; j := j + 1; end

  end;
  write('Результат: ');
  repeat
  k := k + 1;
  write(b[k]);
  until k = j;
readln;
end.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 23.11.2005 21:06
Сообщение #15


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Анна, а чем мое второе решение не понравилось ? мне кажется оно проще да и по короче будет ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анна
сообщение 23.11.2005 21:33
Сообщение #16


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


Не учёл условия, что если к примеру вводить "ракрак", то результатом должно быть "ракрак". Нужно СЛОВО (отдельностоящее) заменить (т.е. нужно чтобы слева и справа от слова небыло букв, а были только либо знаки, либо пробел)
Вот в той программе это учитывается, при вводе "ракрак" или "ракапавпк" результатом эти строки и остаются.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 23.11.2005 21:37
Сообщение #17


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
Нужно СЛОВО (отдельностоящее) заменить


В том чтобыло написано тобой выше я такой фразы не видел no1.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анна
сообщение 23.11.2005 21:51
Сообщение #18


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


По мне это само собой подразумевало. Сказано "Найти в исходном символьном массиые слово ..." Разве, к примеру ввести строчку "раки" - то результатом не будет являться "щукаи", т.к. в этом случае слово РАКИ, а не РАК wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 23.11.2005 21:53
Сообщение #19


Гость






Анна, проверь:
const
  alpha = [#160.. #175, #224..#239];
var
  s: string;
  p, start: integer;

begin
  write('s = '); readln(s);
  p := 0;

  repeat
    start := p;
    p := start + pos('рак', copy(s, start + 1, 255));
  if
    (
      (p <> start)
      and
      ((p = 1) or ( (p > 1) and not(s[p-1] in alpha)))
      and
      ((p + 2 = length(s)) or ((p + 2 < length(s)) and not(s[p+3] in alpha)))
    ) then

    begin
      delete(s, p, 3);
      insert('щука', s, p);
    end;
  until p = start;

  writeln(s);
end.

cool.gif
 К началу страницы 
+ Ответить 
Анна
сообщение 23.11.2005 22:27
Сообщение #20


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


volvo
Правильно, только небольшая поправка в строке:
alpha = [#48..#57, #160.. #175, #224..#239];

Чтобы при наличии цифр в начале или в конце слова, результат оставался тот же.

И ещё, sad.gif, алгоритм был сделан под мою задачу, переделывать что ли .. даже и не знаю sad.gif. Да и вообще с pos, delete ... плохо знакома. И поэтому сама программа не так понятна sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 25.07.2025 23:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"