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