Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 05.05.2014, 08:58   #1 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задачка на множества, Паскаль

Вводится непустая строка из строчных букв не более 79 символов(чтобы было удобно читать). Отдельные слова в ней разделены запятыми слева. Справа от запятой могут быть пробелы. Вывести на печать в алфавитном порядке: все звонкие согласные, которые входят больше чем в одно слово.


Буду благодарен за помощь.
Миниатюры
vj3sktkidqy.jpg  
pashasnuff вне форума   Ответить с цитированием

Старый 05.05.2014, 08:58
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пожалуйста, не торопитесь решать все самостоятельно, просмотрите схожие проблемы

Программа на Паскаль. Множества
Множества

Старый 05.05.2014, 11:20   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А без множеств нельзя? Задача решается существенно проще через массивы.
Vladimir_S вне форума   Ответить с цитированием
Старый 05.05.2014, 14:19   #3 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Изучаем тему про множества, поэтому с помощью их и надо делать.
pashasnuff вне форума   Ответить с цитированием
Старый 05.05.2014, 14:48   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от pashasnuff Посмотреть сообщение
Изучаем тему про множества, поэтому с помощью их и надо делать.
Н-да... ну это только если... не при дамах будь сказано, через что. Ладно, вечером поразмыслю.
Vladimir_S вне форума   Ответить с цитированием
Старый 05.05.2014, 17:59   #5 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 200
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

с множествами не работал, но как понимаю в множестве может содержаться буква только один раз?
то есть слово ОТВЕТ будет множество "О Т В Е"?
значит я беру слово, заношу его в множество и сверяю с множеством звонких согласных? и если более 2 совпадений то запоминаю? я верно понял?
poiu вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 05.05.2014, 18:41   #6 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Например ввели строку
Привет, красный, жук , жало, гадость, горшок
Должен вывести Г,Ж,Р
потому что они в словах повторяются
pashasnuff вне форума   Ответить с цитированием
Старый 05.05.2014, 20:20   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

ПолучИте.
Несколько замечаний.
1. Прописные буквы недопустимы: строка должна состоять из русских слов, написанных строчными буквами и разделенных запятыми.
2. Буква "й" в качестве звонкой согласной не включена в список. Если надо - добавьте и увеличьте длину массива Codes на 1.
3. Сам по себе массив Codes возник исключительного из-за идиотского требования расположить буквы в результирующем списке по алфавиту. Если бы не этот преподский дебилизм, то программа была бы куда компактнее, и никакой надобности в массиве не возникло бы. А так... Дело в том, что элементы множества всегда располагаются "навалом", и упорядочить их внутри множества никакой возможности нет, вот и пришлось извращаться с массивом.
Код:
Const
 Sonants:Set of Char=['б','в','г','д','ж','з','л','м','н','р'];

Var
 S:String;
 C:Char;
 i,j,k,N:Byte;
 Found:Set of Char;
 Codes:Array[1..10] of Byte;

Begin
 Writeln('Enter the string:');
 Readln(S);
 Writeln;
 Found:=[];
 N:=0;
 i:=0;
 Repeat
  Inc(i);
  If (S[i] in Sonants) and not (S[i] in Found) then
   begin
    C:=S[i];
    k:=i;
    repeat
     Inc(k);
    until (S[k]=',') or (k=Length(S));
    if S[k]=',' then
     begin
      repeat
       Inc(k);
      until (S[k]=C) or (k=Length(S));
      if S[k]=C then
       begin
        Found:=Found+[C];
        Inc(N);
        Codes[N]:=Ord(C);
       end;
     end;
   end;
 Until i=Length(S)-1;

 for i:=1 to N-1 do
  for j:=1 to N-i do
   if Codes[j]>Codes[j+1] then
    begin
     k:=Codes[j];
     Codes[j]:=Codes[j+1];
     Codes[j+1]:=k;
    end;
 writeln('Result:');
 for i:=1 to N do write(Chr(Codes[i]),' ');
 Readln
End.
Миниатюры
aa01.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 05.05.2014, 20:23   #8 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Это сделано каким методом? Методом множеств?
pashasnuff вне форума   Ответить с цитированием
Старый 05.05.2014, 20:28   #9 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Почему то не работает..(
Нельзя преобразовать тип set of string к set of char
pashasnuff вне форума   Ответить с цитированием
Старый 05.05.2014, 20:33   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от pashasnuff Посмотреть сообщение
Почему то не работает..(
Нельзя преобразовать тип set of string к set of char
Как видите, у меня работает. И где Вы узрели "set of string"? А главное - какой у Вас Паскаль? Если глючный АВС - то, пардоньте, с этой дрянью не работаю. И еще - где именно спотыкается?
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:54.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.