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 килобайт ) Кол-во скачиваний: 200
 Оффлайн  Профиль  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

 



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