Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 186
1

Как вывести на консоль введённый символ?

30.07.2017, 05:37. Показов 1448. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день!
Написал учебный пример для ввода данных трёх типов: integer, real, char .
Код компиляцию проходит. Но при исполнении программы, упорно не выводится на консоль введённый символ.
Не могу разобраться, что надо изменить в исходном коде. Пробовал этот код в трёх программах-средах. Везде НЕ ВЫВОДИТСЯ коварный введённый символ.
Прошу продвинутых IT-специалистов оказать помощь для работы со школьниками.

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
36
{LEARN04.PAS}
{Use of variable three types: integer, real, char}
{Data input via the keyboard}
Program LEARN04;
Uses
DOS, CRT;
Var
A : integer;
B : real;
Res : real;
Simv : char;
q : char;
Begin
ClrScr;
Writeln;
Writeln('Use of variable three types: integer, real, char');
Writeln('Data input via the keyboard');
Writeln;
Writeln;
Writeln('Input integer A:');
Read(A);
Writeln;
Writeln('Input real B:');
Read(B);
Res := A/B;
Writeln;
Writeln('        Res=',Res,';');
Writeln;
Writeln('Input char Simvol F:');
Readln(Simv);                       {Only !!!   Readln !!!}
Writeln('        Simvol=',Simv);
Writeln;
Writeln;
Write('For stop program, press the key [Enter]:');
Readln(q);
End.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2017, 05:37
Ответы с готовыми решениями:

Вывести приглашение к вводу символа, ввести символ, вывести введенный символ в центре очищенного экрана
Приложение DosBox Tasm.

Как в с++ вывести символ в консоль в произвольном месте, например символ 1 в координатах 50 50
Какие есть варианты

Вывести символ, введенный в инпут
Всем драсьте! Вот вроде бы все просто: $('input').keydown(function(){ con ($(this).val());...

Если введенный символ является цифрой от «0» до «5», то вывести слово «до»
помогите пожалуйста). Если введенный символ является цифрой от «0» до «5», то вывести слово «до» ,...

6
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
30.07.2017, 08:23 2
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
36
37
38
{LEARN04.PAS}
{Use of variable three types: integer, real, char}
{Data input via the keyboard}
program LEARN04;
 
Uses
 CRT;
var
  A: integer;
  B: real;
  Res: real;
  Simv: char;
  q: char;
 
begin
  ClrScr;
  Writeln;
  Writeln('Use of variable three types: integer, real, char');
  Writeln('Data input via the keyboard');
  Writeln;
  Writeln;
  Writeln('Input integer A:');
  Readln(A);
  Writeln;
  Writeln('Input real B:');
  Readln(B);
  Res := A / B;
  Writeln;
  Writeln('        Res=', Res, ';');
  Writeln;
  Writeln('Input char Simvol F:');
  Readln(Simv);                       {Only !!!   Readln !!!}
  Writeln('        Simvol=', Simv);
  Writeln;
  Writeln;
  Write('For stop program, press the key [Enter]:');
  Readln(q);
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,077
Записей в блоге: 1
30.07.2017, 10:19 3
Небольшое пояснение: после ввода по Read в строке 28 чтение символа в строке 34 приводило к считыванию символа завершения строки, для windows/dos это символ с кодом 13 - первый в паре #13#10, для *nix - это #10. До введенного пользователем символа дело не доходило.

Другой вариант исправления - добавить Readln; перед строкой 34.
0
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 186
30.07.2017, 11:11  [ТС] 4
Уважаемые господа! Спасибо за рекомендации. Но пока не получается нормальной работы кода.

Вот очень интересный момент!
Я этот учебный пример написал и на языке C (мне нужно написать две методички с одинаковыми примерами, но решения должны быть на Pascal и на C). Увы, там (в коде на языке C) также проявилась эта проблема. Я задал вопрос на нашем форуме в разделе "C для начинающих". Можно посмотреть.
К моей великой радости, один очень грамотный программист дал рекомендацию по использованию функции
fflush(stdin);
Я эту функцию включил в исходный код. И сразу код безукоризненно заработал!
Может быть аналогичный выход есть и для языка Pascal?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.07.2017, 11:59 5
Можно так написать.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Writeln('Input integer A:');
Read(A);
Writeln;
Writeln('Input real B:');
Read(B);
Res := A/B;
Writeln;
Writeln('        Res=',Res,';');
Writeln;
Writeln('Input char Simvol F:');
Simv:=readkey;                       {Only !!!   Readln !!!}
Writeln('        Simvol=',Simv);
Writeln;
Writeln;
Write('For stop program, press the key [Enter]:');
readln;
Readln
End.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,077
Записей в блоге: 1
30.07.2017, 16:57 6
потоковый ввод из стандартного файла ввода (input) при помощи Read(Ln) и чтение клавиатуры (ReadKey) -- вещи совершенно разные, если программа запущена с перенаправлением входного потока, то ReadKey сослужит плохую службу, остановив выполнение до нажатия клавиши на клавиатуре. Не стоит смешивать одно с другим.
1
7 / 7 / 2
Регистрация: 30.04.2012
Сообщений: 186
31.07.2017, 03:30  [ТС] 7
Уважаемый Puporev!
Я выполнил Вашу рекомендацию. Код стал ОТЛИЧНО работать! Самое большое спасибо!
Привожу доработанный код.

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
36
37
38
{LEARN04.PAS}
{Use of variable three types: int, real, char}
{Data input via the keyboard}
Program LEARN04;
Uses
DOS, CRT;
Var
A : integer;
B : real;
Res : real;
Simb:char;
q : char;
Begin
ClrScr;
Writeln;
Writeln('Use of variable three types: int, real, char');
Writeln('Data input via the keyboard');
Writeln;
Writeln;
Writeln('Input intrger A:');
Read(A);
Writeln;
Writeln('Input real B:');
Read(B);
Res := A/B;
Writeln;
Writeln('        Res=',Res,';');
Writeln;
Writeln('Input char Simbol (letter): ');
Simb:=readkey;
Writeln(Simb);
Writeln;    
Writeln('        Simbol=',Simb,';');
Writeln;
Writeln;
Write('For stop program, press the key [Enter]:');
Readln(q);
End.
Добавлено через 4 часа 30 минут
Для всех. Небольшое уточнение.
Я проверил работу кода в разных программах-средах. Хорошо всё работает в TURBO PASCAL 7.1 и в TMT v.3.50 . Не работает в Free Pascal v.2.6.0 . Для работы со школьниками мне вполне достаточно программы-среды TURBO PASCAL 7.1 .
0
31.07.2017, 03:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2017, 03:30
Помогаю со студенческими работами здесь

Вывести true если введенный символ является гласной буквой
Программа должна выдавать true если введенный символ является гласной. Паскаль.Использовать функции...

Из файла вывести только те строки, которые заканчиваются на введенный с клавиатуры символ
Здравствуйте. Нужно вот что сделать : из файла вывести только те строки, которые заканчиваются на...

Вывести каждый введенный с клавиатуры символ, причем заглавную русскую букву выводить в двух экземплярах
Помогите, пожалуйста, может кто-то делал это. в Книге Жмакина примера не дано, любых пояснений тем...

Исключить из введенной строки символ, введенный с клавиатуры. Вывести на экран количество удаленных символов и строку
При вводе строки символ удаляется только из первого слова. Как сделать, чтобы он удалялся из...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru