Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2011, 17:41   #1
DinamoBrynsk
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 40
По умолчанию работа с файлом

считываю из файла так:
Код:
while not eof(f) do
  begin
  readln(f,a1);
  if length(a1)=2 then
  r1[i]:=strtoint(a1[2])
  else r[i]:=strtoint(a1);
  i:=i+1;
  end;
Содержимое файла числа от -9 до 9:
1
2
3
4
-1
-2
-3
-4
Нужно занести в один массив положительные элементы в другой отрицательные. С положительными все нормально, а вместо отрицательных заносит какие-то громадные значение. Подскажите ошибку
DinamoBrynsk вне форума Ответить с цитированием
Старый 25.02.2011, 18:10   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

delphi или pascal
SERG1980 вне форума Ответить с цитированием
Старый 25.02.2011, 18:19   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А попробуй сделать переменку а и оба массива целочисленной и тогда
Код:
while not eof(f) do
  begin
  readln(f,a1);
  if a1>0 then
   r1[i]:=abs(a1);
  else 
   r[i]:=a1;
  i:=i+1;
  end;
помоему readln всетки умеет распознавать сама число ли это
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.02.2011, 18:29   #4
DinamoBrynsk
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 40
По умолчанию

делфи, нет не распознает, тип string
DinamoBrynsk вне форума Ответить с цитированием
Старый 25.02.2011, 19:33   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) readln(f, ЧисловаяПеременная)
всё таки распознаёт число! Хоть в Pascal, хоть в Delphi

2) код с преобразованием у Вас жуткий! (я бы даже сказал в корне неверный! (напишите в файле +1 - поймёте, что я имею в виду),
но ошибка вот тут:
Код:
  r1[i]:=strtoint(a1[2])
  else r[i]:=strtoint(a1);
  i:=i+1;
с чего Вы решили, что ОДНОЙ переменной Вам хватит для ДВУХ массивов?!?!
можно сделать примерно так:
Код:
var One, K : integer;
...
i1 := 0;
i2 := 0;
while not eof(f) do
  begin
    readln(f,a1);
    Val(a1, One, K);
    if K=0 then {значит прочитали ЧИСЛО}
       if One<0 then begin
           inc(i1);
           r1[i1] := abs(One)
       end
       else begin
           inc(i2);
           r[i2] := One;
       end;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом Ямерт Помощь студентам 2 06.12.2010 18:23
Работа с файлом Leoman Помощь студентам 0 02.04.2010 21:57
Работа с файлом на Си Darh Помощь студентам 2 15.12.2009 23:44
работа с файлом Cpluser Общие вопросы .NET 3 22.11.2009 22:45
Работа с файлом ! PPikaso Помощь студентам 3 29.10.2009 14:21