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

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

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

> Задача на тему "Множества", Задан текст из маленьких латинских букв...
kvadrat
сообщение 14.10.2008 22:49
Сообщение #1


Пионер
**

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

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


Задан текст из маленьких латинских букв в конце стоит точка. Напечатать в алфавитном порядке все согласные буквы которые не входят ни в одно слово с использованием процедуры.



Вот мой вариант решения: В процесе решения зашёл в тупик, нужна ваша помощь.


type mmm=set of char;
var s1:string; h:set of char;
procedure rasbuk(s:string);
var i:integer;j,t:char;n:integer; ss, dd:mmm;
begin
ss:=[];
dd:=[];
for i:=1 to length(s) do
while s[i] = '.' do
begin
while s[i] = ' ' do
if s[i] in h then ss:=ss+[s[i]];
dd:=dd-ss;
for j:='a' to 'z' do
begin
n:=0;
for i:=1 to length(s) do
if j=s[i] then n:=n+1;
if n>=2 then writeln(j);
end;
writeln('Bykvi ne vhodyawie v tekst');
for t:='a' to 'z' do
if t in dd then write(t);
end;
begin
writeln('vvedite tekst');
readln(s1);
h:=['a'..'z'];
rasbuk(s1);
readln;
end; end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 15.10.2008 5:52
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(kvadrat @ 14.10.2008 22:49) *
В процесе решения зашёл в тупик, нужна ваша помощь.

Volvo, безусловно, прав, как всегда, по поводу алгоритма решения. Но мне кажется, что прежде, чем советовать "неповерхностные" решения, нужно помочь человеку разобраться с его собственной попыткой решить, которая вообще далека от попадения в классификацию "поверхностных/неповерхностных" решений, ибо вообще не есть решение.

2 kvadrat:
Не надо думать, что структуризация кода - удел профессионалов, а новичкам только пустая трата времени. Как раз скорее наоборот: в маленькой неструктурированной проге профи, может, и разберется, а новичок - вряд ли.. Я сделал нужные отступы и пропуски в твоей программе (никаких других изменений!), результат ниже:
type
mmm=set of char;

var
s1:string;
h:set of char;

procedure rasbuk(s:string);
var
i:integer;
j,t:char;
n:integer;
ss, dd:mmm;

begin
ss:=[];
dd:=[];
for i:=1 to length(s) do while s[i]='.' do begin
while s[i]=' ' do if s[i] in h then ss:=ss+[s[i]];
dd:=dd-ss;
for j:='a' to 'z' do begin
n:=0;
for i:=1 to length(s) do if j=s[i] then n:=n+1;
if n>=2 then writeln(j);
end;
writeln('Bykvi ne vhodyawie v tekst');
for t:='a' to 'z' do if t in dd then write(t);
end;

begin
writeln('vvedite tekst');
readln(s1);
h:=['a'..'z'];
rasbuk(s1);
readln;
end;
end.

Сразу бросаются в глаза несколько ошибок общего плана:
1. Процедура, по всей видимости, не закрыта (нижний блок явно должен быть головным, но формально входит в процедуру).
2. Параметр цикла i используется повторно внутри цикла.

Дальше пытаемся немного вникнуть в смысл:
3. Последовательность операторов:
while s[i]='.' do begin
while s[i]=' '

- вызывает немалое удивление (хотя, я не утверждаю, что она не имеет право на существование).

Можно было бы продолжить и дальше, но прежде хочется знать твою реакцию.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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