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

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

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

 
 Ответить  Открыть новую тему 
> множества, вывод гласных и согласных букв
shyrik
сообщение 13.01.2005 22:41
Сообщение #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 - 13.01.2005 22:44
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.01.2005 22:52
Сообщение #2


Гость






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


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

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


Новичок
*

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

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


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

я это ещё не написал, у меня там была ошибка которую я ещё не исправил, ща подумаю, напишу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
shyrik
сообщение 24.01.2005 1:48
Сообщение #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 - 24.01.2005 15:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.01.2005 16:06
Сообщение #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 - 26.01.2005 22:38
 К началу страницы 
+ Ответить 
Romtek
сообщение 24.01.2005 23:37
Сообщение #6


Знаток
****

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

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


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


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


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


Новичок
*

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

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


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

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

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


Гость






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

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


Новичок
*

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

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


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


Гость






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


Новичок
*

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

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


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

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


Гость






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


Новичок
*

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

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


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


Гость






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


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

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

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


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
CrAzY99999
сообщение 12.06.2008 15:06
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.06.2008 15:54
Сообщение #17


Гость






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

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

 



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