С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.05.2019
Сообщений: 66

Что нужно добавить ?

02.10.2019, 22:19. Показов 443. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
После того как будет введен повторяющийся символ, нужно выйти из цикла как это сделать ?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type
m_char = set of char;
var
m1: char;
m2: set of 'a'..'z';
begin
m2 :=[];
while not (m1 in m2) do begin
writeln('Введите букву: ');
readln(m1);
if m1 in m2 then
writeln('такая буква уже есть: ', m1)
else m2 := m2 + [m1];
writeln(m2);
m1:='0';
end;
readln;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2019, 22:19
Ответы с готовыми решениями:

Что нужно добавить в программу чтобы она считала еще и количество слов?
program lab_8; uses crt; {подключаем модуль crt} const s: string=',.?!()";:-'; {объявляем...

Что нужно добавить в код чтобы текст был и в самом файле и отображался в окне вывода
const n=9; FileName='tabl.txt'; procedure CreateTable(var f:text); Var x, y: Byte; a: array of integer; Begin ...

Подскажите что нужно добавить в программу
Вобщем написал программу, но не знаю как сделать чтобы результат отображался корректно, например при вводе 55 милиграмм отображался...

5
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
03.10.2019, 03:38
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
program Project1;
type
  TmChar = set of 'a'..'z';
var
  i: integer;
  m1: char;
  m2: TmChar;
begin
  m2:= [];
  while true do
    begin
      writeln('Введите букву: ');
      readln(m1);
      if m1 in m2 then
        begin
          writeln('Такая буква уже есть: ', m1);
          break;
        end
      else
        m2 := m2 + [m1];
      for i:= 0 to 255 do 
        if chr(i) in m2 then
          write(chr(i),' ');
      writeln;
    end;
  writeln('Программа завершила свою работу.');
  readln;
end.
Введенные вами типы всегда начинайте с большой литеры "Т". Это просто культурно.
Для выхода из цикла есть процедура break Ее редко используют, поэтому вы не знаете о ней.
Информацию из множества нельзя вывести обычным способом (writeln(m2)) Для вывода нужен код вывода. Запомните эту конструкцию, если у вас будет задание на вывод информации из множества.
Pascal
1
2
3
 for i:= 0 to 255 do 
        if chr(i) in m2 then
          write(chr(i),' ');
Фраза про завершение работы - для понимания пользователем что программа вышла из цикла. Иначе вы будете находиться в неведении, что произошло: отработала программа как надо или нет, или аварийно завершилась.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
03.10.2019, 09:03
ValentinNemo,
«конструкция» несколько сложнее, чем требуется
Pascal
1
2
3
4
5
6
7
8
9
10
var c: Char:
 
  // полный аналог предложенному
  for c:=Low(c) to High(c) do if c in m then Write(c :2);
 
  // в этом конкретном случае достаточно
  for c:='a' to 'z' do if c in m then Write(c :2);
 
  // или, если поддерживается
  for c in m do Write(c :2);
Добавлено через 5 минут
такие циклы с while обычно строят так:
Pascal
1
2
3
4
5
6
7
8
  // ввод начальный
  Write('a..z: '); ReadLn(c);
  while not (c in m) do begin
    // делаем, что хотели
    if c in ['a'..'z'] then Include(m,c);
    // дублируем ввод
    Write('a..z: '); ReadLn(c);
  end;
Добавлено через 22 минуты
Ну и особенности диалектов, куда уж без них.
Free Pascal не добавляет дополнительных проверок элемента на соответствие границам множества, поэтому обеспечивать сопоставимое значение элемента обязан программист.
Turbo Pascal такие поверки делает, поэтому код ниже отработает правильно (множество не изменится):
Pascal
1
2
3
4
5
6
var
  m: set of 'a'..'z';
  c: Char;
begin
  c:='0'; { вне диапазона множества 'a'..'z'}
  Include(m,c); { m = [] }
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
03.10.2019, 09:11
Собственно, для решения вполне достаточно:
Ввести и вывести на экран множество по принципу «до первого существующего во множестве символа»
1
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
03.10.2019, 09:41
Написал програмку, чтобы все наработкиbormant, попробовать на практике.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program Project1;
var
  c: Char;
  m: set of 'a'..'z';
begin
  Write('a..z: ');
  ReadLn(c);
  while not (c in m) do
  begin
    // делаем, что хотели
    if c in ['a'..'z'] then
      Include(m,c);
    // дублируем ввод
    Write('a..z: ');
    ReadLn(c);
  end;
  writeln;
  Writeln('Answer #1: ');
  // полный аналог предложенному
  for c:=Low(c) to High(c) do
    if c in m then
      Write(c:2);
  writeln;
  Writeln('Answer #2: ');
  // в этом конкретном случае достаточно
  for c:='a' to 'z' do
    if c in m then
      Write(c:2);
  writeln;
  Writeln('Answer #3: ');
  // или, если поддерживается
  for c in m do
      Write(c:2);
  Readln;
end.
Результат:
a..z: e
a..z: r
a..z: w
a..z: r

Answer #1:
e r w
Answer #2:
e r w
Answer #3:
e r w

Работает.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
03.10.2019, 09:46
ValentinNemo,
лучше б так пробовали ;-)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
type
  Range = 'A'..'Z';
var
  m: set of Range;
  c: Char;
begin
  repeat
    if UpCase(c) in [Low(Range)..High(Range)] then Include(m,UpCase(c));
    Write(Low(Range),'..',High(Range),': '); ReadLn(c);
  until UpCase(c) in m;
  Write('['); for c:=Low(Range) to High(Range) do if c in m then Write(c:2); WriteLn(']');
end.
Добавлено через 1 минуту
... если есть for ... in:
Pascal
11
  Write('['); for c in m do Write(c:2); WriteLn(']');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.10.2019, 09:46
Помогаю со студенческими работами здесь

Что нужно добавить до нормальной программы?
Банк принял два вклада по 1000$. Один под 2% годовых, а другой под 3%. Через сколько лет второй вклад превысит первый на 100$? var...

Что нужно добавить в программу чтобы при выводе на экран она предлагала выбрать число элементов массива
подскажите что нужно добавить в программу чтобы при выводе на экран она предлагала выбрать число элементов массива самой а не использовать...

Массив. Что нужно добавить?
TYPE MAS=ARRAY OF REAL; VAR A,X:MAS; VAR RA:INTEGER; PROCEDURE VVOD (VAR N:INTEGER; VAR X:MAS); VAR I: INTEGER; BEGIN...

Что поставить в оператор выбора case, или day нужно в переменные добавить?
var s: string; begin randomize; repeat write('your question:'); readln(s); if s='' then break; case day of ...

Динамические списки. Что нужно добавить, чтобы текст из внешнего файла не делился на строки?
Program Iluha; uses crt; type sSpis = ^rSpis; rSpis = record S : String; Next : sSpis; end; var First, Cur, Last : sSpis; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru