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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 10:06   #1
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию функция eoln() не работает как надо

вот фрагмент кода
Код:
procedure readAlph;
const term=' ';
var c:char;
   i:byte;
begin
  i:=1;
  while not eoln(f) do begin
    inputAlph[i]:='';
    read(f,c);
    while (c<>Term) and (c>#32) do begin
      inputAlph[i]:=inputAlph[i]+c;
      read(f,c);
    end;
  inc(i);
  end;
  readln(f)
end;
f - текстовый файл
Цитата:
1 2 3 4 5 6 7 8 9 0 #
A;1 B;1 C;1 D;1 E;1 F;1 G;1 H;1 I;1 #;0
по условию задачи нужно загнать в inputAlph всю первую строчку (каждая цифра - отдельный элемент).
в результате работы программы в массив загоняется и вторая строка тоже.
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.
Cannibal вне форума Ответить с цитированием
Старый 30.11.2010, 10:21   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

С циклами понамудрили. Не проще ли прочитать первую строку из файла а потом из нее удалить пробелы?

Если вы все-таки уточните условие, то наверное должно быть что-то такое

Код:
while not(eoln(f)) do
 begin
  read(f,c);
   if c in['0'..'9'] then begin
                              inc(i);
                              inputAlph[i]:=inputAlph[i]+c;
                            end; 
 end;
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 30.11.2010 в 10:26.
alex_fcsm вне форума Ответить с цитированием
Старый 30.11.2010, 12:10   #3
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию

проблема в том, что первая строка может быть допустим такая:
ДЛ Н? ТР MH YHNNM и т.д.
то есть разная длина и разные символы
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.
Cannibal вне форума Ответить с цитированием
Старый 30.11.2010, 12:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

while (c<>Term) and (c>#32) and not eoln(f) do begin
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2010, 12:58   #5
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от Cannibal Посмотреть сообщение
проблема в том, что первая строка может быть допустим такая:
ДЛ Н? ТР MH YHNNM и т.д.
то есть разная длина и разные символы
Задайте множество которое не должно оказаться в результирующей строке
Код:
MySet:=[' ','#',','];
.............
.............
   if not(c in MySet) then begin
                              inc(i);
                              inputAlph[i]:=inputAlph[i]+c;
                            end;

Вы скажите что именно надо, сложно советовать не зная условия
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что то не работает как надо... rezak91 Паскаль, Turbo Pascal, PascalABC.NET 9 24.05.2010 22:27
Таймер обратного отсчета работает не так как надо.. нужно найти ошибку в коде... Человек_Борща Общие вопросы Delphi 10 13.04.2010 20:06
Прога не работает как надо - код С NightManiak Помощь студентам 2 21.01.2010 08:15
С#.NET. Маленькая проблемка - условие не работает так , как надо Ksy Общие вопросы .NET 11 24.12.2009 21:07
Объясните, как работает функция strlen() TheWanderer Общие вопросы C/C++ 9 25.11.2008 22:46