Знатоки Паскаля, нужна ваша помощь!

avatar rak_omar_lobster

458

17

rak_omar_lobster

Пользователь

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

rak_omar_lobster

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

Суть такова: при вводе с клавиатуры строки длиной ОДИН при применении к ней функции length Паскаль выдает что ее длина ДВАFailFishBabyRageWutFace

Как это контрить?

ReaLRiL

Пользователь

Регистрация: 15.06.2016

Сообщения: 1712

Рейтинг: 1139

Нарушения: 101

ReaLRiL

Регистрация: 15.06.2016

Сообщения: 1712

Рейтинг: 1139

Нарушения: 101

Лол , ты по какому уроку паскаль учишь?

kremennik

Куратор других игр и разного

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

kremennik

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

img
Длину -1 выдавать?

rak_omar_lobster

Пользователь

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

rak_omar_lobster

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

kremennik сказал(а):
Длину -1 выдавать?
Нажмите, чтобы раскрыть...

Нельзя так, такая херня происходит только если длина 1, если длина 2 то выдет 2 как положено.

kotuxa

Пользователь

Регистрация: 21.08.2013

Сообщения: 564

Рейтинг: 431

kotuxa

Регистрация: 21.08.2013

Сообщения: 564

Рейтинг: 431

rak_omar_lobster сказал(а):
Суть такова: при вводе с клавиатуры строки длиной ОДИН при применении к ней функции length Паскаль выдает что ее длина ДВАFailFishBabyRageWutFace

Как это контрить?
Нажмите, чтобы раскрыть...

Я конечно паскаль никогда не учил, но \n (символ перевода строки) тоже может учитываться. По крайней мере в си так.

kremennik

Куратор других игр и разного

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

kremennik

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

img
rak_omar_lobster сказал(а):
Нельзя так, такая херня происходит только если длина 1, если длина 2 то выдет 2 как положено.
Нажмите, чтобы раскрыть...

а 0

Learn_to_play

Пользователь

Регистрация: 16.04.2015

Сообщения: 1601

Рейтинг: 1226

Learn_to_play

Регистрация: 16.04.2015

Сообщения: 1601

Рейтинг: 1226

rak_omar_lobster сказал(а):
Суть такова: при вводе с клавиатуры строки длиной ОДИН при применении к ней функции length Паскаль выдает что ее длина ДВАFailFishBabyRageWutFace

Как это контрить?
Нажмите, чтобы раскрыть...

Попробуй убрать из строки 2й символ мб

Learn_to_play

Пользователь

Регистрация: 16.04.2015

Сообщения: 1601

Рейтинг: 1226

Learn_to_play

Регистрация: 16.04.2015

Сообщения: 1601

Рейтинг: 1226

rak_omar_lobster сказал(а):
Суть такова: при вводе с клавиатуры строки длиной ОДИН при применении к ней функции length Паскаль выдает что ее длина ДВАFailFishBabyRageWutFace

Как это контрить?
Нажмите, чтобы раскрыть...

Или даже попробуй  функцию Delete на 2й символ, просто чтобы проверить, что это.

rak_omar_lobster

Пользователь

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

rak_omar_lobster

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

kremennik сказал(а):
а 0
Нажмите, чтобы раскрыть...

При нуле тоже все в порядке.

Learn_to_play сказал(а):
Или даже попробуй  функцию Delete на 2й символ, просто чтобы проверить, что это.
Нажмите, чтобы раскрыть...

Попробовал. Все становится на свои места. НО: как определить, что надо удалять символ, если у строки произвольная длина, ведь длина для 1 и для 2 одинаковая?

kremennik

Куратор других игр и разного

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

kremennik

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

img
rak_omar_lobster сказал(а):
При нуле тоже все в порядке.

Нажмите, чтобы раскрыть...

Используешь простые английские символы/цифры?

rak_omar_lobster

Пользователь

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

rak_omar_lobster

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

kremennik сказал(а):
Используешь простые английские символы/цифры?
Нажмите, чтобы раскрыть...

Мне нужны только цифры, но и с буквами происходит тоже самое.

kremennik

Куратор других игр и разного

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

kremennik

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

img
Код бы был полезен наверное

rak_omar_lobster

Пользователь

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

rak_omar_lobster

Регистрация: 17.03.2014

Сообщения: 647

Рейтинг: 294

kremennik сказал(а):
Код бы был полезен наверное
Нажмите, чтобы раскрыть...

var a:string;

begin

readln(a);

writeln(length(a));

end.

kremennik

Куратор других игр и разного

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

kremennik

Регистрация: 10.11.2011

Сообщения: 45388

Рейтинг: 27560

img
Я вообще не разбираюсь в паскале

Но в онлайн среде которую я нашел та же фигня получается

Вставил якобы рабочий код из интернета, там то же

По какой-то причине в конце строки с длиной 1 видимо есть переход на новую строку

Valkrest

Пользователь

Регистрация: 16.05.2013

Сообщения: 266

Рейтинг: 357

Valkrest

Регистрация: 16.05.2013

Сообщения: 266

Рейтинг: 357

Для символов кириллицы ситуация понятна, дефолтный паскаль их не любит и не умеет индексировать.

Но чтобы такое творилось с цифрами? Я не смог ни один онлайн-компилятор заставить такое воспроизвести

GladiatoRRR325

Пользователь

Регистрация: 10.02.2015

Сообщения: 387

Рейтинг: 101

GladiatoRRR325

Регистрация: 10.02.2015

Сообщения: 387

Рейтинг: 101

попробуй считывать не с помощью readln(), а с помощью read().

GladiatoRRR325

Пользователь

Регистрация: 10.02.2015

Сообщения: 387

Рейтинг: 101

GladiatoRRR325

Регистрация: 10.02.2015

Сообщения: 387

Рейтинг: 101

либо скачай паскаль abc.net , там точно правильно работает

Learn_to_play

Пользователь

Регистрация: 16.04.2015

Сообщения: 1601

Рейтинг: 1226

Learn_to_play

Регистрация: 16.04.2015

Сообщения: 1601

Рейтинг: 1226

rak_omar_lobster сказал(а):
Суть такова: при вводе с клавиатуры строки длиной ОДИН при применении к ней функции length Паскаль выдает что ее длина ДВАFailFishBabyRageWutFace

Как это контрить?
Нажмите, чтобы раскрыть...

Проверил все это в Паскале Абс, все работает правильно. Это значит, что у тебя проблемы с самой IDE