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


Новичок
*

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(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 4:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name