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

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

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

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


Гость






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

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

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


Гость






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

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


Профи
****

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

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


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

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


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


Гость






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


Гость






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


Новичок
*

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

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


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


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


Гость






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


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


Гость






Да и ещё, у тебя в курсовой нет описания алгоритма ... сколько тебе за неё хоть поставили?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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)))
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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]
)
, если я не ошибаюсь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


Новичок
*

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

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


Это не курсовая была, а лабораторная. Отн ас не требуют писменого описания алгоритма. Мы рассказываем устно. А получила я 4.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


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

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

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


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


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


Бывалая
***

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

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


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


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

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

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


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


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


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


Бывалая
***

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

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


По мне это само собой подразумевало. Сказано "Найти в исходном символьном массиые слово ..." Разве, к примеру ввести строчку "раки" - то результатом не будет являться "щукаи", т.к. в этом случае слово РАКИ, а не РАК wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





- Текстовая версия 23.12.2024 20:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name