0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 21
1

Задача на тему: множества

14.10.2008, 23:40. Показов 4051. Ответов 6
Метки нет (Все метки)

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

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

Код
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.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2008, 23:40
Ответы с готовыми решениями:

Задача на тему функции
Условие: http://img140.imageshack.us/img140/6048/lab7zad3hm0.jpg Мой вариант решения: program...

Задача не сложная на тему строки.
Создайте программу, которая запрашивает тестовую строку и заменяет все слоги "ра" на "пар"....

Задача на тему работа со строками
Если в строке цифр больше, чем латинских букв, заменить все цифры знаком '+'. В противном случае...

Задача на тему PascalABC (Циклы)
Задача 1. Найти сколько слагаемых необходимо, чтобы сумма 2+4+6+... оказалась больше 100. ...

6
Почетный модератор
64276 / 47575 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
15.10.2008, 10:03 2
Вы избрали неверную тактику. Раз тема множества, то и надо на полную использовать их возможности. Посмотрите как это можно сделать в три действия:
1. Прочитать строку и выбрать согласные буквы.
2. Из множества всех согласных вычесть найденные.
3. Распечатать полученное множество.
Код
[SIZE=2]
uses crt;
const sg=['b','c','d','f','g','h','k','l','m','n','p','q','r','s','t','v','w','x','z'];
var str:string;
procedure RasBuk(s:string);
var m:set of char;
      i:integer;
      j:char;
begin
m:=[]; [/SIZE][FONT=Arial][SIZE=2][FONT=Arial][SIZE=2]{[/SIZE][/FONT][/SIZE][/FONT][SIZE=2]для начала множество пустое[/SIZE][FONT=Arial][SIZE=2][FONT=Arial][SIZE=2]}
[/SIZE][/FONT][/SIZE][/FONT][SIZE=2]for i:=1 to length(s) do
if s[i] in sg then m:=m+[s[i]];[/SIZE][FONT=Arial][SIZE=2][FONT=Arial][SIZE=2] {[/SIZE][/FONT][/SIZE][/FONT][SIZE=2]заносим в него все согласные буквы из текста[/SIZE][FONT=Arial][SIZE=2][FONT=Arial][SIZE=2]}
[/SIZE][/FONT][/SIZE][/FONT][SIZE=2]m:=sg-m;[/SIZE][FONT=Arial][SIZE=2][FONT=Arial][SIZE=2] {[/SIZE][/FONT][/SIZE][/FONT][SIZE=2]вычитаем из множества всех согласных букв наше множество[/SIZE][FONT=Arial][SIZE=2][FONT=Arial][SIZE=2]}
[/SIZE][/FONT][/SIZE][/FONT][SIZE=2]for j:='b' to 'z' do
if j in m then write(j,' ');[/SIZE][FONT=Arial][SIZE=2][FONT=Arial][SIZE=2] {[/SIZE][/FONT][/SIZE][/FONT][SIZE=2]выводим то что осталось[/SIZE][FONT=Arial][SIZE=2][FONT=Arial][SIZE=2]}
[/SIZE][/FONT][/SIZE][/FONT][SIZE=2]end;
begin
clrscr;
writeln('Ввведите текст из маленьких латинских букв:');
readln(str);
RasBuk(str);
readln
end.
[/SIZE]
1
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 21
19.10.2008, 20:09  [ТС] 3
Признаю свои ошибки, но при решении задачи, нужно искать положение точки, которая обозначает конец текста, пробелы которые обозначают конец слова и уже в самих словах искать согласные и вычитать их из ранее заданого множества согласных букв.
0
Почетный модератор
64276 / 47575 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
19.10.2008, 20:17 4
Напечатать в алфавитном порядке все согласные буквы которые не входят ни в одно слово с использованием процедуры.
Если буква не входит ни в одно слово, то она не входит и в строку, зачем искать слова? А точка тут вообще не причем, так она вообще не буква, может она как-то нужна при вводе строки, что после ее ввода, дальнейший ввод символов программа не разрешает, но это к теме множества не относится. Может Вы в условии допустили ошибку? В данном варианте ни слова ни точки не нужны.
0
0 / 0 / 0
Регистрация: 18.05.2008
Сообщений: 21
20.10.2008, 17:50  [ТС] 5
Задан текст из маленьких латинских букв в конце стоит точка.(точка обозначает конец строки и символы стоящие после неё должны быть не в счёт) Напечатать в алфавитном порядке все согласные буквы которые не входят ни в одно слово (а не "в строку", хоть это и выглядит глупо но вся загвозка задачи именно в том что нужно, найти слово, затем найти в слове согласные, вычесть их из основного множества согласных, введёного ранее, далее ищем следующее слово и т.д.) с использованием процедуры.
0
Почетный модератор
64276 / 47575 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
20.10.2008, 18:55 6
Вот, переделал. Вроде все учел.
Код
[SIZE=2]
uses crt;
const sg=['b','c','d','f','g','h','k','l','m','n','p','q','r','s','t','v','w','x','z'];
type Tmnoz=set of char;
var s,sl:string;
k:integer;
mn:Tmnoz;
j:char;
procedure RasBuk(s:string;var mm:Tmnoz);
var m:Tmnoz;
i:integer;
begin
m:=[]; {для начала множество пустое}
for i:=1 to length(s) do
if s[i] in sg then m:=m+[s[i]]; {заносим в него все согласные буквы из слова}
mm:=sg-m; {вычитаем из множества всех согласных букв наше множество}
end;
begin
clrscr;
writeln('Ввведите текст из маленьких латинских букв:');
readln(s);
insert(' ',s,pos('.',s)); {вставим перед точкой пробел для удобства}
while pos('.',s)>1 do {пока не точка}
while (pos(' ',s)>0) do {пока есть пробелы}
begin
sl:=copy(s,1,pos(' ',s)-1); {копируем очередное слово}
RasBuk(sl,mn); {вычитаем согласные}
delete(s,1,pos(' ',s)); {удаляем это слово + пробел}
end;
for j:='b' to 'z' do
if j in mn then write(j,' '); {выводим то что осталось}
readln
end.
[/SIZE]
0
0 / 0 / 0
Регистрация: 26.10.2010
Сообщений: 5
26.10.2010, 11:12 7
Помогите с решением задачи про множество в паскале:
В лотерее генерируется 34 шара из диапазона от 1 до 90 выдать на печать выпавшие шары.

 Комментарий модератора 
Kiril1, я создал отдельную тему по твоей задаче: здесь. По правилам форума для каждого вопроса должна быть отдельная тема.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2010, 11:12
Помогаю со студенческими работами здесь

задача на множества
помогите вообще,никак не получается написать Даны два множества М и N, состоящие из 10 целых...

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

Задача на множества.
Не могли бы Вы помочь с задачей, вроде бы и лёгкая, но то ли у меня руки кривые, то ли ещё что, но...

Задача на множества.
Даны 2 строки. Определить количество букв в обеих строках. Вывести буквы из первой строки, котторых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru