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

> Прочтите прежде чем задавать вопрос!

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

 
 Ответить  Открыть новую тему 
> Тип Char и функция Val
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Владимир

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


Как бы так избавиться от досадной помехи?..
При преобразовании типа char в тип integer получаются не те цифры, которые нужны. Вместо 4 - 10, вместо 75 - 215... это какая-то особенность? Если да, то как её обмануть и получить нормальные цифры?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Пример, КАК ты это делаешь, приведи...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


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

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

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


Цитата
При преобразовании типа char в тип integer получаются не те цифры, которые нужны. Вместо 4 - 10, вместо 75 - 215..

пардон ми, как ты 75 в char запихнул ?


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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Корректно было бы переводить char в byte - они имеют одинаковый размер в памяти. Тогда результат будет в точности соответствовать номеру символа. Например:
byte('2') даст 50
byte('A') даст 65
Ты все же напиши конкретно, что именно ты делаешь. Способов много. Ошибочных способов - еще больше smile.gif
И про 75 - тоже очень интересно.. Может, это #75 был? Но как получил 215 - неясно..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 95
Пол: Женский
Реальное имя: Оля

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


зачем все так сложно?
I:=ord(ch)-ord('0')
и вам это было сложно написать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


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

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

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


K Y S K A, так тебе придется циклом обрабатывать каждый символ и потом все полученные цифры записывать в число. Это 2 цикла... зачем, когда есть процедура val ?
ну и кто сложне прелагает ?


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


Пионер
**

Группа: Пользователи
Сообщений: 95
Пол: Женский
Реальное имя: Оля

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


ну например в стринг запихнуть иэто юзить smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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

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

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


Я уже объяснил почему твой метод неприемлим.


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


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Владимир

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


Оставил я затею с char, сделал текстовый файл. Текст посимвольно переводится в числа (записываясь в числовой файл) и суммируется. В файле сум.тхт спрятаны числа, которые в сумме дают именно 75 smile.gif Но получается почему-то 215. Ошибок вроде бы нет, значит какая-то хитрость. rolleyes.gif

Program File1;
Var sum : text;
sum1 : file of integer;
s,t : string;
i,c,m,n : integer;

Begin
Assign(sum,'sum.txt');
Assign(sum1,'sum1.dat');
{$I-}
Reset(sum);
Rewrite(sum1);
{$I+}
If IOResult<>0 then
Begin
Writeln('The file is absent.');
Halt;
End;
i:=1;
n:=0;
While not eoln(sum) do
Read(sum,s);
For i:=1 to length(s) do
Begin
If s[i]<>' ' then
Begin
t:=s[i];
Val(t,m,c);
Write(sum1,m);
n:=n+m;
End;
End;
Close(sum);
Close(sum1);
Writeln(n);
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(TBVlad @ 4.02.2006 14:08)
Ошибок вроде бы нет, значит какая-то хитрость.

blink.gif blink.gif

А складывать числа, а не цифры не пробовал?
Program File1;
Var
sum : text;
sum1 : file of integer;
s,t : string;
i,c,m,n : integer;

Begin
Assign(sum,'sum.txt');
Assign(sum1,'sum1.dat');
{$I-}
Reset(sum);
Rewrite(sum1);
{$I+}

if IOResult <> 0 then begin
Writeln('The file is absent.'); Halt;
end;

n := 0;
while not eoln(sum) do read(sum, s); { Зачем вот это - я так и не понял }

T := '';
For i := 1 to length(s) do begin
if s[i] <> ' ' then T := T + s[i]
else begin
Val(t, m, c);
Write(sum1, m);
n := n + m;
T := '';
End;
End;

{ Ну, и последнее число в строке }
if T <> '' then begin
Val(t, m, c);
Write(sum1,m);
n := n + m;
end;

Close(sum);
Close(sum1);
Writeln(n);
End.
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 17.06.2024 6:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name