IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> перевод строки символов в число
>hamka<
сообщение 16.02.2005 21:09
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


В программе вводятся числа как строка символов. (можно также вводить и буквы и т.д. и т.п.) Их требуется преобразовать в числа. Алгоритм таков к последнему числу прибавляем предпоследнее *10 + предпредпоследнее*100 и т.д. Вопрос -> в какую систему счисления нужно переводить символы аски-кода. В 16-рич или 10-тич. И вообще я запуталась.
В итоге программы должна быть "защита от дурака". Но, например, чтобы не брать буквы, нужно проверять строку символов на аски-код? ( выдается несовметимость типов) . или что?
я раньше писала подобную прогу на асм'е. и там как-то все легче было. а здесь... =))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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 тич системе.
В КАКУЮ СИСТЕМУ НУЖНО ПЕРЕВОДИТЬ СТРОКУ СИМВОЛОВ В ЧИСЛО, ЧТОБЫ ДАЛЬШЕ С НЕЙ РАБОТАТЬ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 16.02.2005 22:13
Сообщение #6


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


А чем не устраивает

var
s:string;
begin
readln(s);
val ...
?

p.s. а если надо из 16-ричной системы, то взять проедурку из FAQ'a


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
>hamka<
сообщение 16.02.2005 22:16
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


По условию val использовать нельзя
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 16.02.2005 22:19
Сообщение #8


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


тогда:
вводим строку.
Ее длинна получилась length.
Затем циклично каждый разряд переводим.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 16.02.2005 22:21
Сообщение #9


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
и почему когда два символа переводятся вместе, например 12, ord возвращает тока 10-тич представление 2-ки.

потому что ORD возвращает код СИМВОЛА а не строки (т.е. его назначение в этом)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
>hamka<
сообщение 17.02.2005 11:12
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Цитата(Oleg_Z @ 16.02.05 22:19)
тогда:
вводим строку.
Ее длинна получилась length.
Затем циклично каждый разряд переводим.

но переменная у меня описана как char, поэтому ее длину я посчитать не могу. А если описывать как стринг, то как ее проверить на не цифры?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.02.2005 11:39
Сообщение #11


Гость






А может быть, чтобы не переспрашивать простые вещи друг у друга, все-таки стоило бы привести пример входной строки, и то, что из этой строки надо получить? (И кстати, чем можно пользоваться, а чем нельзя, как например Val), и что в дальнейшем с этим всем делать...

Кусками очень трудно что-либо советовать ... Когда знаешь окончательную задачу, можно подобрать совершенно другой алгоритм...
 К началу страницы 
+ Ответить 
>hamka<
сообщение 17.02.2005 12:44
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


У меня такая задача -> запрашивается до 10 ( включая 10 ) цифр у пользователя -> их сортировка пузырьком в 2-х направлениях. Цифры могут быть любые. val использовать нельзя. Задача простая, но нужно сделать МАКСИМАЛЬНО защищенную прогу. т.е. можно вводить буквы, бить по клавиатуре и т.д. => выдается сообщение, что неправ. ввод + проверка на мах допустимое число (число я делаю longint). все элементы - целые положит числа. и сейчас моя главная проблема -преобразовать нажатый символ в число ( если это цифра ) . Если тип как char - одни проблемы, если как string - другие.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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  +


А на асме работало????? Или хоть компилилось?


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
>hamka<
сообщение 17.02.2005 18:52
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Цитата(FreeMan @ 17.02.05 14:45)
А на асме работало????? Или хоть компилилось?

на асме работала защита и естественно перевод символов с число, чтобы дальше уже работать с матрицей из этих чисел.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 17.02.2005 19:52
Сообщение #16


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Итак, какие проблеммы сейчас?
кажется уже все разжеванно...
отличить букву от цифры по ord и все!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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-номер символа в строке.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
>hamka<
сообщение 18.02.2005 12:08
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Женский

Репутация: -  0  +


Всем спасибо, я решила свое проблему. Кстати, больше всего мне помог
APAL =))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 18.02.2005 12:25
Сообщение #19


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Цитата(>hamka< @ 18.02.05 12:08)
Всем спасибо, я решила свое проблему. Кстати, больше всего мне помог
APAL =))


Рад был помочь! :rose:


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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:


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.04.2024 11:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"