ошибка вывода writeln

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

MusaevRamiz
незнакомец
Сообщения: 5
Зарегистрирован: 04.12.2018 20:48:55

ошибка вывода writeln

Сообщение MusaevRamiz »

Приветствую, Друзья! Подскажите, пожалуйста.

Код: Выделить всё

var    N, S, R : string;
begin
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
R:='hello, ' + N +' '+ S + '!';
writeln(R);
readln
end.

Не могу понять, почему при запуске не выводится полное сообщение hello + значение переменных N + S!
А также интересует вопрос, после выполнения процедуры вывода фамилии, если напечатать имя, то оно поверх фамилии печатается, в той же строке. Слова как бы друг на друга накладываются. В итоге выводится только сообщение hello и значение переменной S. Результат на скрине.
Вложения
Безымянный.png
Безымянный.png (8.47 КБ) 41739 просмотров
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

fp ide на данный момент чуток устарела и глючит, незнаю, починят ли ее. запускай в отдельном терминале, все будет ок
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

MusaevRamiz писал(а):Приветствую, Друзья! Подскажите, пожалуйста.

Код: Выделить всё

var    N, S, R : string;
begin
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
R:='hello, ' + N +' '+ S + '!';
writeln(R);
readln
end.


попробуй так:

Код: Выделить всё

var    N, S, R : string;
begin
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
writeln('hello, ', N, ' ', S, '!';
readln
end.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Seenkao
объясни мистическую разницу? или гадаем?
Seenkao
энтузиаст
Сообщения: 578
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

Разницы принципиально нет, но возможно неправильно что-то происходит при "сложении", и это может выявиться при разном исполнении программы.

Вообще, зачем ты мне задаёшь подобные вопросы? Или хочешь сказать, что ты ни разу не сталкивался с ситуациями, когда в коде меняешь значения местами и код начинает по другому работать? Хотя не должен!!!

У меня работают оба варианта правильно.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Подтверждаю - всё работает
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

при запуске приложения в консоли ос работает.
при запуске приложения в консоль fp ide (контрол+ф9) в винде глючит
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Когда уже люди усвоят. что fp ide - это окаменевшее гуано мамонта, которое ни в коем случае нельзя использовать? :roll:
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 839
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Я когда учился, на информатике были задачки с TurboPascal. Так вот, на моем ПК единственно его не было, и чтобы не заморачиваться все тоже самое в среде Delphi делал.
Ну не суть.. в общем две истины с тех пор в голове:
1. Писать всегда два раза readln в конце, а не один как тут.
2. Не использовать связку if then без begin end.
Ибо не работало как надо.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

странные истины. никогда бы неподумал))
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 839
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

zub писал(а):странные истины. никогда бы неподумал))

Ну, а что?) Иначе окно исполнения закрывалось и не показывало результат. А ход условий выполнения был абы какой.
Со временем еще одна добавилась - не пользоваться бесплатным средами разработки использующие внешние библиотеки типа .NetFramework. Это я про TurboDelphi.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Sharfik писал(а):не пользоваться бесплатным средами разработки использующие внешние библиотеки типа .NetFramework. Это я про TurboDelphi

А у вас за NetFramework кто-то денег запросил?
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 839
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Снег Север писал(а):А у вас за NetFramework кто-то денег запросил?

Это редкосная подстава просто. Я где то на форуме писал, как я пришел к lazarus. В один прекрасный день пытаешься установить TurboDelphi, а оно тебе говорит дай NF 3.5, а на ОС стоит более новый, и более старый уже отказывается установится. Спасибо, больше не нужно. Все что для себя теперь пишу делаю чтобы работало без говно библиотек. Плагины, программы продаваемые для ПО Autodesk такую же мерзкую особенность имеют - работают только с конкретной версией.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

У меня не было случая, чтобы более старый NetFramework не устанавливался в дополнение к новому. У меня всегда стоят три-четыре версии NetFramework.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Снег Север писал(а):Когда уже люди усвоят. что fp ide - это окаменевшее гуано мамонта, которое ни в коем случае нельзя использовать? :roll:

Это винда - окаменелое говно мамонта, которая выносит мозг траблами с кодировками, а в линуксе патченная версия фп-иде работает нормально, а в лазарусе редактор глючит, хз как в последней версии - не пересобирал её. В третьей версии фпц изговняли кодировки специально чтобы они в винде меньше глючили.

Добавлено спустя 16 минут 1 секунду:
MusaevRamiz писал(а):Приветствую, Друзья! Подскажите, пожалуйста.

Код: Выделить всё
var N, S, R : string;
begin
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
R:='hello, ' + N +' '+ S + '!';
writeln(R);
readln
end.


В винде плохо с кодировками - винда любит перекодировать что не надо, отчего портится вывод в консоль и системные команды. Вводишь команду прыгнуть в каталог, а винда эту команду без спроса перекодирует в мусор и прыжок промахивается мимо каталога. Буквально, считываешь из системы набор байтов, вводишь его же, и он не срабатывает, потому что винда успела его изговнять. Это какой-то маразм Гейтса и Баллмера. В фпц 3 версии с этим стало возможно бороться, и программы писать следует примерно как-то так:

Код: Выделить всё

{$CODEPAGE CP866}
uses
JwaWinCon, Windows, jwawinbase, jwawinnt;//точно не вспомню, что тут лишнее :)

var    N, S, R : rawbytestring; //а этот тип строк - чтобы компилятор не делал никаких лишних перекодирований
ZZ5: ANSISTRING;//РАВБИТЕСТРИНГ НЕ ПРИНИМАЕТ

begin
RUNCOMMAND('cmd.exe /c chcp 866',ZZ5); //контрольный "выстрел, чтобы накормить маздайку кодировкой"
setconsolecp(866);
//а теперь только можно общаться с маздайкой
//при подозрениях, процедуры - повторить
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
R:='hello, ' + N +' '+ S + '!';
writeln(R);
readln;
end.

Долго запускать винду, потому код не протестировал, но он надёрган из рабочего и протестированного кода. Если из иде эта версия теста заработает нормально, то это значит, что в виндовой иде и твоей программе не хватает такого кода.
Ответить