
Вопрос задан 20.04.2021 в 10:44.
Предмет Информатика.
Спрашивает Колиниченко Егор.
Дан текст из строчных латинских букв, за которыми следует точка. Включить в множество первые
вхождения букв в текст, сохраняя их исходный взаимный порядок.Pascal.Решить с использованием процедур

Ответы на вопрос

Отвечает Арбуз Карина.
Странноватая задача, конечно. Естественно, что в множестве нет порядка элементов, использование процедур (функций) здесь совершенно ни к чему. Если учитывать все требования, то получится весьма корявая программа. Примерно вот такая:
var s,s1:string; i:integer;
mn:set of 'a'..'z';
function f(c:char;m:set of 'a'..'z'):boolean;
begin
f:=(not (c in m))and(c in ['a'..'z'])
end;
begin
writeln('Введите строку:');readln(s);
mn:=[];s1:='';
for i:=1 to length(s) do
if f(s[i],mn) then
begin
mn:=mn+[s[i]]; s1:=s1+s[i];
end;
writeln(s1);
end.
Пример работы:
Введите строку :
this is an example text.
thisanexmpl
var s,s1:string; i:integer;
mn:set of 'a'..'z';
function f(c:char;m:set of 'a'..'z'):boolean;
begin
f:=(not (c in m))and(c in ['a'..'z'])
end;
begin
writeln('Введите строку:');readln(s);
mn:=[];s1:='';
for i:=1 to length(s) do
if f(s[i],mn) then
begin
mn:=mn+[s[i]]; s1:=s1+s[i];
end;
writeln(s1);
end.
Пример работы:
Введите строку :
this is an example text.
thisanexmpl



Отвечает Сулейманова Мадина.
Напишу "современный" вариант решения. Хотя бы для того, чтобы показать, насколько современные способы решения задач в том же паскале ушли вперед по сравнению с тем временем когда придумывались эти задачи...
// PascalABC.NET 3.0, сборка 1088
begin
var s:=ReadString('Введите строку: ');
var MySet:=s.Where(x->x in ['a'..'z']).Distinct;
Writeln(MySet)
end.
Тестовое решение:
Введите строку: this is an example text.
[t,h,i,s,a,n,e,x,m,p,l]
А вот если воспользоваться "традиционной" работой с множеством, исходный порядок следования символов будет нарушен:
// PascalABC.NET 3.0, сборка 1088
var
MySet:set of char;
procedure AddToSet(s:string; var pSet:set of char);
begin
foreach var c in s do
if c in ['a'..'z'] then Include(pSet,c)
end;
begin
var s:=ReadString('Введите строку: ');
AddToSet(s,MySet);
Writeln(MySet)
end.
Тестовое решение:
Введите строку: this is an example text.
{n,e,m,l,t,s,a,i,h,p,x}
// PascalABC.NET 3.0, сборка 1088
begin
var s:=ReadString('Введите строку: ');
var MySet:=s.Where(x->x in ['a'..'z']).Distinct;
Writeln(MySet)
end.
Тестовое решение:
Введите строку: this is an example text.
[t,h,i,s,a,n,e,x,m,p,l]
А вот если воспользоваться "традиционной" работой с множеством, исходный порядок следования символов будет нарушен:
// PascalABC.NET 3.0, сборка 1088
var
MySet:set of char;
procedure AddToSet(s:string; var pSet:set of char);
begin
foreach var c in s do
if c in ['a'..'z'] then Include(pSet,c)
end;
begin
var s:=ReadString('Введите строку: ');
AddToSet(s,MySet);
Writeln(MySet)
end.
Тестовое решение:
Введите строку: this is an example text.
{n,e,m,l,t,s,a,i,h,p,x}



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Пример кода на языке Pascal для решения данной задачи с использованием процедур:
arduinoprogram FirstOccurrences;
type
CharSet = set of 'a'..'z'; // определяем множество символов
var
text: string;
firstOccurrences: CharSet;
procedure FindFirstOccurrences(const text: string; var firstOccurrences: CharSet);
var
i: Integer;
begin
firstOccurrences := []; // очищаем множество
for i := 1 to Length(text) do
begin
if not (text[i] in firstOccurrences) then // если символ еще не встречался
begin
firstOccurrences := firstOccurrences + [text[i]]; // добавляем его в множество
end;
end;
end;
begin
Write('Введите текст: ');
Readln(text);
FindFirstOccurrences(text, firstOccurrences);
Writeln('Первые вхождения букв:');
for var c in firstOccurrences do
begin
Write(c, ' ');
end;
Writeln;
end.
В данном коде определяется тип CharSet
как множество символов от 'a' до 'z', затем определяется переменная text
, содержащая введенный пользователем текст, и переменная firstOccurrences
, которая будет хранить первые вхождения символов.
Затем определяется процедура FindFirstOccurrences
, которая принимает на вход текст и множество firstOccurrences
и находит первые вхождения символов в тексте, добавляя их в множество.
В основной части программы сначала запрашивается текст у пользователя, затем вызывается процедура FindFirstOccurrences
для нахождения первых вхождений символов в тексте, и наконец выводятся найденные символы на экран.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili