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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2017, 15:10   #1
pro100wato
 
Регистрация: 03.12.2016
Сообщений: 8
По умолчанию PASCAL. Сортировка данных по размеру. Вывод корректных и некорректных данных.

Ввод:

Фамилия
Имя
Отчество
Личный номер
Пол

Вот, что сделал своими кривыми руками. Помогите доделать пожалуйста!

Код:
const
  n = 5;

type
  Talp = record 
    fam: string; 
    name: string; 
    otch: string; 
    pol: sex;
    nom: integer; 
  end;
  
  b = array [0..n] of Talp;

procedure vpisal(f: text; error: text; var b: Talp);

var
  i, e: integer; 
  st, sl: string; 
  a: Talp;
begin
  i := 1; 
  assign(f, 'файл.txt'); 
  reset(f); 
  assign(error, 'ошибки.txt'); 
  rewrite(error); 
  while not Eof(f) do 
  begin
    readln(f, sl); 
    b[i].fam := copy(sl, 1, pos(' ', sl) - 1); 
    a := (a.fam); 
    delete(sl, 1, pos(' ', sl)); 
    b[i].name := copy(s, 1, pos(' ', sl) - 1); 
    a := (st.name); 
    delete(s, 1, pos(' ', s)); 
    b[i].otch := copy(s, 1, pos(' ', sl) - 1); 
    a := (a.otch); 
    delete(s, 1, pos(' ', s)); 
    b[i].pol := copy(s, 1, pos(' ', sl) - 1); 
    a := (a.pol); 
    delete(s, 1, pos(' ', s)); 
    b[i].nom := copy(sl, 1, pos(' ', sl) - 1); 
    e := pos(' ', sl); 
    delete(s, 1, pos(' ', s)); 
    
    writeln(b[i]); 
    inc(i); 
    a: st; 
  end; 
  close(f); 
  begin
    writeln(a); 
  end; 
end;

begin

end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 27.04.2017 в 15:29.
pro100wato вне форума Ответить с цитированием
Старый 27.04.2017, 15:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от pro100wato Посмотреть сообщение
Код:
b = array [0..n] of Talp;

procedure vpisal(f: text; error: text; var b: Talp);
сразу НЕТ. красным выделил ошибку. нужно объявить дополнительно тип данных массив из записей и его уже передавать в процедуру:
Код:
type array [0..n] of Talp = TArrayOfTalp;

var
 MyArr : TArrayOfTalp;

.....

procedure vpisal(f: text; error: text; var b: TArrayOfTalp);
а в чём помощь нужна?

что такое: "Сортировка данных по размеру" ?
по размеру чего их надо отсортировать?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.04.2017, 15:54   #3
pro100wato
 
Регистрация: 03.12.2016
Сообщений: 8
По умолчанию

Корректный размер

К примеру допустимый размер "Фамилия Имя Отчество" и программа корректирует введённые данные таким способом - я ввожу Полежайкин Василий Иванович, программа записывает в файл как "Полежай Вас Иванович"
pro100wato вне форума Ответить с цитированием
Старый 27.04.2017, 16:01   #4
pro100wato
 
Регистрация: 03.12.2016
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
сразу НЕТ. красным выделил ошибку. нужно объявить дополнительно тип данных массив из записей и его уже передавать в процедуру:
Код:
type array [0..n] of Talp = TArrayOfTalp;


var
 MyArr : TArrayOfTalp;

.....

procedure vpisal(f: text; error: text; var b: TArrayOfTalp);
а в чём помощь нужна?

что такое: "Сортировка данных по размеру" ?
по размеру чего их надо отсортировать?

В один файл записываются корректные данные, а во второй ошибки, допустим цифры в имени или наоборот.
pro100wato вне форума Ответить с цитированием
Старый 27.04.2017, 16:02   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от pro100wato Посмотреть сообщение
К примеру допустимый размер "Фамилия Имя Отчество" и программа корректирует введённые данные таким способом - я ввожу Полежайкин Василий Иванович, программа записывает в файл как "Полежай Вас Иванович"
Это Вы сами придумали?
При чём здесь - "корректирует"? Это не коррекция - а порча данных.


а про сортировку речь уже не идёт? (если что, сортировка - это процесс упорядочивания данных, когда данные располагаются в определённом порядке).

А у Вас вообще есть задание ?
Приведите его полностью.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.04.2017, 16:06   #6
pro100wato
 
Регистрация: 03.12.2016
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Это Вы сами придумали?
При чём здесь - "корректирует"? Это не коррекция - а порча данных.


а про сортировку речь уже не идёт?

у Вас вообще есть задание ?
Приведите его полностью.

Прочитать из файла данные, если они подходят под запись, то записать в файл выхода. Иначе записать в файл ошибок. Размерность записи мы назначаем сами.
pro100wato вне форума Ответить с цитированием
Старый 27.04.2017, 16:07   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

впрочем. я уже вижу, что задание тут каждый раз меняется произвольно.
я вряд ли смогу Вам помочь в написании программы, которая ищет ошибки, без чёткого определения, что является ошибкой.
или обрезает данные под "корректный размер".
извините.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.04.2017, 16:18   #8
pro100wato
 
Регистрация: 03.12.2016
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
впрочем. я уже вижу, что задание тут каждый раз меняется произвольно.
я вряд ли смогу Вам помочь в написании программы, которая ищет ошибки, без чёткого определения, что является ошибкой.
или обрезает данные под "корректный размер".
извините.
ошибкой являются все некорректные данные, к примеру:
Номер отрицательный
Больше чем 5 полей
В словах цифры

Нету точного определения.

Хорошо, спасибо хоть за попытку
pro100wato вне форума Ответить с цитированием
Старый 27.04.2017, 16:44   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от pro100wato Посмотреть сообщение
Нету точного определения.
это ключевое предложение.

если нет (или Вы не можете сформулировать) чёткие и однозначные требования, то запрограммировать решение нельзя (мы сейчас не рассматриваем обучающиеся системы с искусственным интеллектом, разумеется).

если Вам реально нужно прочитать данные из текстового файла и проверить, нет ли там ошибок, то Вам обязательно нужно формулировать правила.
ну, например, поле "фамилия": должно состоять только из символов кириллицы, допускается наличие одного дефиса в середине.
пробелы и любые другие символы не допускаются (это ошибка).
длина поля от 2 символов (если меньше - то это ошибка).

поле "Имя":
должно состоять только из символов кириллицы
пробелы и любые другие символы не допускаются (это ошибка).
длина поля от 2 символов.

поле "личный номер" должно состоять только и цифр, длина поля строго 5 (например).

поле "пол" допускает только значение представленное одним из 4-х символов кириллицы "м", "М", "ж", "Ж". любые другие варианты являются ошибкой.

все поля располагаются в одно строке и отделяются друг от друга пробелами (количество разделяющих пробелов может быть более одного).

Выходной файл должен содержать строки с корректными записями. Поля в результирующем файле должны разделятся строго одним пробелом.

вот как-то так.


p.s. и всё таки у меня чёткое чувство, что Вы неправильно поняли исходные условия задания, придумали себе какую-то другую задачу, отличную от начальной задачи и теперь героическими усилиями пытаетесь её решить.
Очень надеюсь, что я ошибаюсь. Кстати, можете сфотографировать ваше задание и выложить на форум эту фотку?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод-вывод данных из файла PASCAL Monarch Помощь студентам 3 29.06.2014 20:11
Ввод данных в массив записей из текстового файла, сортировка по ключу, вывод в файл (на Паскаль) orandzheviyman Помощь студентам 8 21.01.2014 08:15
Запрет ввода некорректных данных Виктория1986 Microsoft Office Excel 1 05.01.2013 19:01
Pascal вывод данных _FENDER_ Паскаль, Turbo Pascal, PascalABC.NET 2 10.04.2011 22:08
Вывод линии данных в режиме VGA/EGA на Pascal Yana_ Помощь студентам 2 07.12.2010 23:58