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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2012, 18:19   #1
Falcao
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 33
По умолчанию Программа паскаль(строки и записи)

Нужно из одного файла взять фамилию имя отчество должность и тел.номер(3 цифры) и вывести в другой файл(для начала хотя бы на консоль), первоначальный файл в таком виде: "фамилия имя отчество должность и тел.номер"(в ряд), далее в зависимости от кол-ва сотрудников - столбиком... итак, что получилось у меня:
Код:
uses crt;
type info=record;
     name:string[10];
     surname:string[10];
     father:string[15];
     job:string[10];
     num:string[3];
       end;
var f1:text;
    a: array[1..100] of info;
    i: integer;
  Begin
assign(f1,'d:\l7.in');

reset(f1);

          for i:= 1 to 5 do
           with a[i] do
            readln(f1,surname,name,father,job,num);

close(f1);

for i:= 1 to 5 do
 with a[i] do
  writeln(surname, name,father,job,num);

end.
т.е. фамилия считывается как вся строка и выводит просто в столбик фамилии, помогите пожалуйста
Falcao вне форума Ответить с цитированием
Старый 16.12.2012, 18:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Неудачная конфигурация файла...
Код:
while not eof(f1) do begin
 readln(f1,s);
 with rec do begin
  i:=pos(' ',s);surname:=copy(s,1,i);delete(s,1,i+1);
  i:=pos(' ',s);name:=copy(s,1,i);delete(s,1,i+1);
  i:=pos(' ',s);father:=copy(s,1,i);delete(s,1,i+1);
  i:=pos(' ',s);job:=copy(s,1,i);delete(s,1,i+1);
   num:=copy(s,1,length(s));
 end;
тут выводим rec
end;
rec - переменка типа info
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.12.2012, 18:36   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
var f1,f2: file of info;
и

Код:
for i:= 1 to 5 do begin
  read(f1,a[i]);
  with a[i] do write(f2,surname, name,father,job,num);
end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 16.12.2012, 18:40   #4
Falcao
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 33
По умолчанию

вряд ли этот вариант подойдёт, нужно выводить по елементах, в дальнейшем в задании идут варианты поиска фамилии или номера
Falcao вне форума Ответить с цитированием
Старый 16.12.2012, 19:29   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
вряд ли этот вариант подойдёт
Вы вот это счас про который из двух предложенных?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 16.12.2012, 21:07   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Sciv
Так у него текстовый файл:
Цитата:
файл в таком виде: "фамилия имя отчество должность и тел.номер"(в ряд)
Как бы записи не имеют фиксированный размер. Если я правильно понял...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.12.2012, 21:13   #7
Falcao
Пользователь
 
Регистрация: 29.11.2012
Сообщений: 33
По умолчанию

как я понял, нужно считывать фам(и-тая) имя(и-тое) и т.д.
со строками вообще гемор, а на парах не объяснили(
в задании 10 рядов сказано, я решил 5, разницы не вижу

Последний раз редактировалось Falcao; 16.12.2012 в 21:15.
Falcao вне форума Ответить с цитированием
Старый 16.12.2012, 21:19   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Так у него текстовый файл:
В задании это нигде явно не указано, зато в коде юзается record


Цитата:
Как бы записи не имеют фиксированный размер. Если я правильно понял...

А если разбирать эту запись - как раз таки имеют, ибо строки лимитированные

Код:
type info=record;
     name:string[10];
     surname:string[10];
     father:string[15];
     job:string[10];
     num:string[3];
       end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 16.12.2012, 22:02   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
10 рядов
Рядов чего? Тип файла какой? Как он изнутри выглядит?
Цитата:
зато в коде юзается record
Я тоже для работы с текстовыми файлами иногда записи использую (инога даже лимитированные чтоб отмаршалить потом в другую систему проще было), так что это не показатель.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.12.2012, 07:38   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Я тоже для работы с текстовыми файлами иногда записи использую (инога даже лимитированные чтоб отмаршалить потом в другую систему проще было), так что это не показатель.
Согласен, что не показатель. Сам когда-то так делал, потом пришел к выводу, что это не есть удобно - и перешел на Delphi+БД
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Строки, записи, множества. bodya00728 Помощь студентам 0 17.11.2011 18:40
Сравнение записи и строки BaronVik Паскаль, Turbo Pascal, PascalABC.NET 2 06.02.2011 22:23
Строки и записи на паскале Jaguar799 Помощь студентам 2 21.12.2010 23:25
записи и строки perojenko Помощь студентам 2 23.03.2009 19:20