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

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

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

> Тип Char и функция Val
TBVlad
сообщение 2.02.2006 17:34
Сообщение #1


Новичок
*

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

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


Как бы так избавиться от досадной помехи?..
При преобразовании типа char в тип integer получаются не те цифры, которые нужны. Вместо 4 - 10, вместо 75 - 215... это какая-то особенность? Если да, то как её обмануть и получить нормальные цифры?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
TBVlad
сообщение 4.02.2006 15:08
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.02.2006 15:33
Сообщение #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

 

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