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

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

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

 
 Ответить  Открыть новую тему 
> Массив из русских букв
сообщение
Сообщение #1





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

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


Цитата
program z3;
uses crt;
var
myArr : array [1..100,1..100] of string [1];
i,j,n,m:integer;
sym:char;
s:string;
begin
clrscr;

randomize;
writeln('число строк');
readln(n);
writeln('число столбцов');
readln(m);

for i := 1 to n do
begin
writeln;
for j:=1 to m do
begin
myarr[i,j]:=char(random(31)+128);
write(myarr[i,j]:4);
end;
end;
readln;

writeln('Введите слово');
READLN(S);


readln;
end.


Подскажите, пожалуйста, как написать программу, которая определяет можно ли из этих букв составить данное слово S?Массив состоит из строк, каждая строка из одного случайной буквы русского алфавита.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


То есть есть набор символов и слово S и нужно опрежделить можно ли составить это слово используя этот набор символов ? Ну тогда можно вот так:

идешь по символам слова S, смотришь если символ S[i] есть в наборе, переходишь к следующему символу слова S (и возможно удаляешь этот символ из набора) иначе выходишь из цикла.

Если проверены все символы слова, то можно.


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





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

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


Цитата(klem4 @ 17.04.2007 22:19) *

То есть есть набор символов и слово S и нужно опрежделить можно ли составить это слово используя этот набор символов ? Ну тогда можно вот так:

идешь по символам слова S, смотришь если символ S[i] есть в наборе, переходишь к следующему символу слова S (и возможно удаляешь этот символ из набора) иначе выходишь из цикла.

Если проверены все символы слова, то можно.


Извиняюсь, но не мог бы написать с помощью кода? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

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


Можно вот так:
program z3;
uses wincrt;
label metka;
var
myArr : array [1..100,1..100] of string [1];
i,j,n,m,k:integer;
sym:char;
s,st:string;
begin
clrscr;

randomize;
writeln('число строк');
readln(n);
writeln('число столбцов');
readln(m);

for i := 1 to n do
begin
writeln;
for j:=1 to m do
begin
myarr[i,j]:=char(random(32)+224); {я поменяла здесь параметры, а то у меня
не буквы, а ерунда какая-то, так русский алфавит}
write(myarr[i,j]:4);
end;
end;
writeln;

writeln('Введите слово');
READLN(S);
st:=s;

{а вот и нужный цикл}
metka: for i:=1 to n do
for j:=1 to m do
begin
if (copy(s,1,1))=myarr[i,j] then
begin
delete(s,1,1);
if length(s)<>0 then goto metka;
end;
end;

if length(s)=0 then writeln ('из массива можно составить слово ',st,'')
else writeln ('из массива нельзя составить слово ',st,'');

readln;
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Оля, а не получится так, что, скажем, слово - "молоко", а в матрице - только одна буква "о", и по одной "м", "л" и "к"... По твоему методу будет считаться, что слово составить можно, формально же - нет, потому что букв "о" должно быть 3...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

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


Цитата
Оля, а не получится так, что, скажем, слово - "молоко", а в матрице - только одна буква "о", и по одной "м", "л" и "к"... По твоему методу будет считаться, что слово составить можно, формально же - нет, потому что букв "о" должно быть 3...

Я об этом тоже подумала, но в условии не сказано, что букву нельзя брать несколько раз...

Добавлено через 1 мин.
Попробую осуществить и другой вариант, но не сейчас... Поздно уже)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

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


Вот:
metka:  for i:=1 to n do
for j:=1 to m do
begin
if (copy(s,1,1))=myarr[i,j] then
begin
delete(s,1,1);
myarr[i,j]:=''; {тут}
if length(s)<>0 then goto metka;
end;
end;

Мы просто использованный символ из массива будем очищать: myarr[i,j]:=''; Тогда второй раз он уже не подойдет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





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

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


БОЛЬШОЕ СПАСИБО!!!!!! rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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