Вопрос задан 20.04.2021 в 10:44. Предмет Информатика. Спрашивает Колиниченко Егор.

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

вхождения букв в текст, сохраняя их исходный взаимный порядок.Pascal.Решить с использованием процедур
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Арбуз Карина.
Странноватая задача, конечно. Естественно, что в множестве нет порядка элементов, использование процедур (функций) здесь совершенно ни к чему. Если учитывать все требования, то получится весьма корявая программа. Примерно вот такая:
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
0 0
Отвечает Сулейманова Мадина.
Напишу "современный" вариант решения. Хотя бы для того, чтобы показать, насколько современные способы решения задач в том же паскале ушли вперед по сравнению с тем временем когда придумывались эти задачи...

// 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}
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Пример кода на языке Pascal для решения данной задачи с использованием процедур:

arduino
program 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 для нахождения первых вхождений символов в тексте, и наконец выводятся найденные символы на экран.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос