В программе вводятся числа как строка символов. (можно также вводить и буквы и т.д. и т.п.) Их требуется преобразовать в числа. Алгоритм таков к последнему числу прибавляем предпоследнее *10 + предпредпоследнее*100 и т.д. Вопрос -> в какую систему счисления нужно переводить символы аски-кода. В 16-рич или 10-тич. И вообще я запуталась.
В итоге программы должна быть "защита от дурака". Но, например, чтобы не брать буквы, нужно проверять строку символов на аски-код? ( выдается несовметимость типов) . или что?
я раньше писала подобную прогу на асм'е. и там как-то все легче было. а здесь... =))
Ну, во-первых,
Цитата(Правила Раздела)
6. Самое главное - это раздел теоретический, т.е. никаких задач и программ - для этого есть отдельный раздел!
А во вторых:
Цитата(>hamka< @ 16.02.05 20:09)
я раньше писала подобную прогу на асм'е. и там как-то все легче было. а здесь...
"Не верю" (С) Станиславский.
Ну не может быть, чтобы у человека, писавшего эту программу на асме были проблемы с ее реализацией на Паскале.
Цитата(>hamka< @ 16.02.05 20:09)
Алгоритм таков к последнему числу прибавляем предпоследнее *10 + предпредпоследнее*100 и т.д. Вопрос -> в какую систему счисления нужно переводить символы аски-кода.
Согласно этому высказыванию - в 10-ю, если бы было нужно в 16-ричную, надо было бы делать так: "к последнему числу прибавляем предпоследнее * 16 + предпредпоследнее * 256 и т.д."
ну начнемс с того, что для меня легче для написание программ асм. ( возможно лучше его изучила, а в паскале у меня достаточно поверхностные знания).
Этот алгоритм я как раз взяла из проги на асме.
еще раз вопрос.
я нажимаю клавишу -> символ представляется аски-кодом-> оrd'ом переводится в код из таблицы ( и он в 16-ри системе счисления)
А как же то, что Паскаль все выдает в 10 тич системе.
В КАКУЮ СИСТЕМУ НУЖНО ПЕРЕВОДИТЬ СТРОКУ СИМВОЛОВ В ЧИСЛО, ЧТОБЫ ДАЛЬШЕ С НЕЙ РАБОТАТЬ?
Цитата(>hamka< @ 16.02.05 20:40)
я нажимаю клавишу -> символ представляется аски-кодом-> оrd'ом переводится в код из таблицы ( и он в 16-ри системе счисления)
С каких это пор Ord возвращает 16-ричное число? Ord возвращает 10-ные числа... А кроме того, если с этими числами (полученными из строк) планируется производить еще какие-либо арифметические действия (о чем, кстати,
ничего не упоминалось в первоначальном варианте задания), то ответ - переводить нужно в 10-ю с/с... Так как все арифметические операции производятся только с 10-ными числами...
ну пусть оrd возвращает в 10-рич систему. Нажат символ нуль. значит нужно от ord отнять 48 ( что я и делала, чтобы получить 0) но его( нуля) нет т.е.
10 переводится в 1
и почему когда два символа переводятся вместе, например 12, ord возвращает тока 10-тич представление 2-ки.
А чем не устраивает
var
s:string;
begin
readln(s);
val ...
?
p.s. а если надо из 16-ричной системы, то взять проедурку из FAQ'a
По условию val использовать нельзя
тогда:
вводим строку.
Ее длинна получилась length.
Затем циклично каждый разряд переводим.
Цитата
и почему когда два символа переводятся вместе, например 12, ord возвращает тока 10-тич представление 2-ки.
потому что ORD возвращает код СИМВОЛА а не строки (т.е. его назначение в этом)
Цитата(Oleg_Z @ 16.02.05 22:19)
тогда:
вводим строку.
Ее длинна получилась length.
Затем циклично каждый разряд переводим.
но переменная у меня описана как char, поэтому ее длину я посчитать не могу. А если описывать как стринг, то как ее проверить на не цифры?
А может быть, чтобы не переспрашивать простые вещи друг у друга, все-таки стоило бы привести пример входной строки, и то, что из этой строки надо получить? (И кстати, чем можно пользоваться, а чем нельзя, как например Val), и что в дальнейшем с этим всем делать...
Кусками очень трудно что-либо советовать ... Когда знаешь окончательную задачу, можно подобрать совершенно другой алгоритм...
У меня такая задача -> запрашивается до 10 ( включая 10 ) цифр у пользователя -> их сортировка пузырьком в 2-х направлениях. Цифры могут быть любые. val использовать нельзя. Задача простая, но нужно сделать МАКСИМАЛЬНО защищенную прогу. т.е. можно вводить буквы, бить по клавиатуре и т.д. => выдается сообщение, что неправ. ввод + проверка на мах допустимое число (число я делаю longint). все элементы - целые положит числа. и сейчас моя главная проблема -преобразовать нажатый символ в число ( если это цифра ) . Если тип как char - одни проблемы, если как string - другие.
Цитата(>hamka< @ 17.02.05 11:44)
запрашивается до 10 ( включая 10 ) цифр у пользователя
В таком случае я ВООБЩЕ не понимаю проблемы... Цифра - это '0' .. '9', она преобразуется через (ord(ch) - ord('0')) к числовому представлению, и заносится в массив, который сортируется...
Хотя я подозреваю, что нужна все-таки работа с
числами... Но здесь я не буду это писать... Для этого есть раздел "Задачи". Учитесь задавать вопросы.
P.S. Я же просил привести
примеры, а не
описание ввода... Вы русский-то язык знаете? На асме она писала...
А на асме работало????? Или хоть компилилось?
Цитата(FreeMan @ 17.02.05 14:45)
А на асме работало????? Или хоть компилилось?
на асме работала защита и естественно перевод символов с число, чтобы дальше уже работать с матрицей из этих чисел.
Итак, какие проблеммы сейчас?
кажется уже все разжеванно...
отличить букву от цифры по ord и все!
Цитата(>hamka< @ 17.02.05 11:12)
но переменная у меня описана как char, поэтому ее длину я посчитать не могу. А если описывать как стринг, то как ее проверить на не цифры?
длина типа CHAR = 1 байт, т.е. один символ и не понятно тогда почему - "ее длину я посчитать не могу"
"А если описывать как стринг, то как ее проверить на не цифры?" - так же как и CHAR - к каждому символу обращение через S[k] - соответственно S-string, k-номер символа в строке.
Всем спасибо, я решила свое проблему. Кстати, больше всего мне помог
APAL =))
Цитата(>hamka< @ 18.02.05 12:08)
Всем спасибо, я решила свое проблему. Кстати, больше всего мне помог
APAL =))
Рад был помочь! :rose:
Digitalator
18.02.2005 23:52
Цитата(>hamka< @ 18.02.05 20:08)
Всем спасибо, я решила свое проблему. Кстати, больше всего мне помог
APAL =))
Если вам помогло вот это:
Цитата(APAL @ 18.02.05 18:04)
длина типа CHAR = 1 байт, т.е. один символ и не понятно тогда почему - "ее длину я посчитать не могу"
"А если описывать как стринг, то как ее проверить на не цифры?" - так же как и CHAR - к каждому символу обращение через S[k] - соответственно S-string, k-номер символа в строке.
то необходимо было почитать раздел "типы" любой книжки по паскалю, перед тем как задавать тут вопросы. Интересные сейчас "программисты" пошли - хотят написать виндоуз без элементарного знания типов :fire:
настоящие программисты пишут по интуиции =))
Цитата(>hamka< @ 18.02.05 19:49)
настоящие программисты пишут по интуиции =))
Извините,
>hamka<, но к Вам это как-то относится? Вы же элементарных вещей не знаете... "Я это делала на асме" - Ну, ну... Вы хоть раз его запускали, асм-то, как файл называется, знаете?
P.S. А вот ник свой Вы оправдываете полностью...
Не пойму, чего Вы на нее так взъелись?
Цитата(volvo @ 18.02.05 21:06)
P.S. А вот ник свой Вы оправдываете полностью...
Ну а это почему? Ничего подобного я пока что не заметил.
К чему вообще обостряете вопрос?
Форум - для помощи! Так давайте помогать, а не обсуждать кто лучший.
На то были причины...
просто это не первый раз на форуме "Я могу на асме\си\прологе\джаве\дельфи\алголе\фортране, НО ВОТ НА ПАСКАЛЕ НУ НЕ КАК НЕ ПОЛУЧАЕТСЯ!
а ника коснулись имхо тоже не просто так.
просто задача была полностью разжеванна в пределах первых 13 сообщений включительно...
Digitalator
19.02.2005 21:09
Цитата
Форум - для помощи! Так давайте помогать, а не обсуждать кто лучший.
По правилам форума необходимо читать
FAQ
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.