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

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

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

 
 Ответить  Открыть новую тему 
> множества, вывод гласных и согласных букв
сообщение
Сообщение #1


Новичок
*

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

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


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

я правильно начинаю прогу??и веду подсчёт гласных букв??
Цитата
Program bukvi;
const r=ord('а')-ord('А');
var m:set of 'а'..'я';
    sl:array[1..50] of string;
    s:string;
    i,k,l:integer;
    c:char;
begin m:=['а','е','ё','и','о','у','ы','э','ю','я']
      write('введите текст на русском языке:');
      readln(s);

      writeln('Вот эти буквы:');
      for c:='а' to 'я' do if c in m then write( с );
      writeln



Сообщение отредактировано: shyrik -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






shyrik
А почему бы вместо
Код
var m:set of 'а'..'я';
...
m:=['а','е','ё','и','о','у','ы','э','ю','я'];
не сделать
Код
const
 m:set of 'а'..'я' = ['а','е','ё','и','о','у','ы','э','ю','я'];


Цитата
веду подсчёт согласных букв
Я не увидел в программе никакого "подсчета" - только распечатка всех гласных букв...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 13.01.05 22:52)
Я не увидел в программе никакого "подсчета" - только распечатка всех гласных букв...

я это ещё не написал, у меня там была ошибка которую я ещё не исправил, ща подумаю, напишу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


вот опять вернулся к этой проге и окончательно запутался, что тут не то?
подсчёт гласных букв которые входят в каждое слово.

Цитата
program lr_9;
uses Crt;
var
  text: string;
  MySet: set of char;
  i,j,k, StCh,EndCh: integer;
  test:boolean;
res: array [-1..1] of byte;
begin
MySet := ['а','е', 'ё', 'и', 'й', 'о','у','ы','э','ю','я'];
writeln('You must wirte some text. End of text is point');
readln(text);
StCh := 1; EndCh:=-1;
for i :=  1 to length(text) do
begin
if (text[i]=' ')or(text[i]='.') then
begin
if text[i] in MySet then  inc(res[i]);
end;
for k := i+1 to EndCh do
writeln(text[k]);
end;
readln;
end.


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


Гость






shyrik
Вот правильный вариант:
Код
const
 all_vowels: set of char =
   ['а', 'е', 'ё', 'и', 'й', 'о', 'у', 'ы', 'э', 'ю', 'я'];
 word_ch: set of char = [];
var
 s: string;
 i: byte;
 in_all: set of char;
begin
 in_all := all_vowels;
 readln(s);
 for i := 1 to length(s) do
   begin
     if s[i] in [' ', '.'] then
       begin
         in_all := in_all * word_ch;
         word_ch := [];
       end
     else
       if s[i] In all_vowels Then
         word_ch := word_ch + [ s[i] ];
   end;
 for i := 0 to 255 Do
   If chr(i) in in_all Then write(chr(i):3);
 writeln
end.


Эта программа считает также все гласные, которые не входят хотя бы в одно слово:
Код
const
 all_vowels: set of char =
   ['а', 'е', 'ё', 'и', 'й', 'о', 'у', 'ы', 'э', 'ю', 'я'];
 word_ch: set of char = [];
var
 s: string;
 i: byte;
 in_all, in_one: set of char;
begin
 in_all := all_vowels; in_one := all_vowels;
 readln(s);
 for i := 1 to length(s) do
   begin
     if s[i] in [' ', '.'] then
       begin
         in_all := in_all * word_ch;
         in_one := in_one - word_ch;
         word_ch := [];
       end
     else
       if s[i] In all_vowels Then
         word_ch := word_ch + [ s[i] ];
   end;
 writeLn('В каждом слове: ');
 for i := 0 to 255 Do
   If chr(i) in in_all Then write(chr(i):3);
 writeln;

 writeLn('Ни в одном слове: ');
 for i := 0 to 255 Do
   If chr(i) in in_one Then write(chr(i):3);
 writeln
end.


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

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

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


При работе со множествами лучше использовать
Include
Exclude


Пример:
Код
Include (ChSet, 'a');  { <=> ChSet := ChSet + ['a'] }


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


а чтобы вывести буквы которые входят в каждое слово надо из заданных букв вычесть получившейся результат?тогда у меня не выходит. я добовляю эту строку
Код
s[i]:=s[i]-chr(i)
 writeln ('',s[i]);

или можно раньше это подсчитать?исправив в этой строке плюс на минус:
Код
word_ch := word_ch + [ s[i] ];

тогда он вообще ничего хорошего не получается.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






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

Этот фрагмент, по Вашему, что делает?
Код
for i := 0 to 255 Do
  If chr(i) in in_all Then write(chr(i):3);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


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


Гость






shyrik
Можете мне объяснить, что требуется выводить вообще? По условию задачи надо было
Цитата
Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое слово
Что моя программа и делает.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


верно, но мне надо ещё сделать:вывести гласные которые не входят хотя бы в одно слово.
если я ввожу
Код
if not (chr(i) in in_all)_ Then write(chr(i):3);

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


Гость






shyrik
Смотри первый ответ: множества ... Я добавил еще кое-что... :yes:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


оп-па, большое спасибо за помощь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Люди Помогите!!!!!!!!!!! Дан текст, за которым следует точка. В алфавитном порядке напечатать (по разу) все строчные русские гласные буквы, входящие в этот текст.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


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

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

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


Во первых, зачем задавать свои вопросы в чужих темах, во вторых в чем проблема ?проходишь по строке, если буква строчная и русская и ее нету в множестве, то выводишь ее на экран и доюавляешь в множество ...


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





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

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


Помогите появились ошибки не знаю что делать. Завтра защита, а я ещё одну должен сделать PLEASE HELP SOS

Пусть дана непустая последовательность слов из строчных русских букв.
Между соседними словами присутствует запятая, за последним точка.
Напечатайте в алфавитном порядке гласные буквы, которые входят в каждое слово.

My

program ___CrAzY___; {Название программы}
uses WinCRT; {Включение библиотеки}
type letters=set of char;
mass=array[1..33] of string;
const empty:letters=[];
var Deafs,setX:letters;
str:string;
M:mass;
F_InTen,F_NoTest:boolean;
k,kol_slov:byte;

procedure Init(s:string;var X:mass;var c:byte);
var i,l:integer;
begin
l:=length(s);
c:=1;
for i:=1 to l-1 do
if (s[i]<>',') and (s[i]<>'.') then
X[c]:=X[c]+s[i]
else
begin
inc©;
X[c]:='';
end;
end;

function Set_Letters(slovo:string):letters;
var i:byte;
tmp:letters;
begin
for i:=1 to length(slovo) do
include(tmp,slovo[i]);
Set_Letters:=tmp;
end;

procedure Output;
var i:byte;
begin
setX:=Deafs;
write('[');
for i:=1 to length(str) do
if (str[i] in Deafs) and (str[i] in setX) then
begin
exclude(setX,str[i]);
if setX=[] then write(str[i],']')
else write(str[i],',');
end;
end;

begin
clrscr;
writeln('Please, input the text: ');
readln(str);
Init(str,M,kol_slov);
F_InTen:=true;
F_NoTest:=false;
Deafs:=['а','е','ё','и','й','о','у','э','ю','я'];
for k:=1 to kol_slov do
begin
if odd(k) and (Deafs*Set_Letters(M[k])=empty) then F_InTen:=false
else Deafs:=Deafs*Set_Letters(M[k]);
if not odd(k) and (Deafs*Set_Letters(M[k])<>empty) then F_NoTest:=true;
end;
if F_InTen and F_NoTest then Output
else writeln('Таких гласных нет!');
readkey;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






Выше было приведено решение задачи (если ты собираешься делать по-своему, зачем спрашиваешь? Делай... За тебя никто ничего делать не будет...)... А ссылку я тебе дал не для того, чтоб ты зафлудил и эту тему, а для того чтоб ты ее просто ПРОЧЕЛ. dry.gif
 К началу страницы 
+ Ответить 

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

 





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