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
|
|
14.10.2008, 23:40 | |
Ответы с готовыми решениями:
6
Задача на тему функции
Задача на тему PascalABC (Циклы) |
Почетный модератор
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 выдать на печать выпавшие шары.
0
|
26.10.2010, 11:12 | |
Помогаю со студенческими работами здесь
7
задача на множества Задача на множества.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |