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

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

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

> Поиск однофамильцев в типизированном файле
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

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


Нужно вывести из типизированного ф-ла однофамильцев. Типизированный файл состоит из типа запись.

Например: при запросе фамилии Петрова выводились все стоки с фамилиями Петрова и Петров.
или при запросе : Петров выводились и Петров и Петрова.
Как можно сделать проверку на подстановку или отброс окончаний?

Всем заранее спасибо!

procedure print_usl;
begin
reset(F);
if (filesize(F) <> 0) then
begin
repeat
clrscr;
Writeln('Введите ФИО студента ');
readln(Str_v);
{cp:=copy()}
Chek_DL_SL(Str_v, 15);
Chek_FIO(Str_v);
if f1 = false then
write(' ');
until (f1 = true) and (f2=true);
str_v:=str_v;

K:=0;
While not EoF (F) do begin
read(F,S);

IF str_v[length(str_v)]= 'а' then
begin
s.fio_stud:=copy(str_v, 1, length(str_v)-1);
end else
begin
s.fio_stud:=str_v;

print_shapka;
k:=1;

writeln;
Write( #179);
Write( S.FIO_Stud:16);
Write( #179);
Write( S.Stip:9);
Write( #179);
Write( S.FIO_mum:14);
Write( #179);
Write( S.zp_mum:8);
Write( #179);
Write( S.FIO_ot:14);
Write( #179);
Write( S.zp_ot:8);
Write( #179);
writeln;

end;
end;
if k=0 then writeln('Студентов с фамилией ',str_v, ' не найдено' );
readkey;
clrscr;
close(F);
Osh;

end
else
begin
clrscr;
Writeln('Файл пуст. Записи не найдены');
close(F);
osh;
readkey;
clrscr;
end;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


Я имел в виду что-то типа:
{Процедура печати по условию}
procedure print_usl;
var test_fio : string;
begin
reset(F);
if (filesize(F) <> 0) then
begin
repeat
// Мне все равно ,что у тебя происходит в Chek_DL_SL и Chek_FIO, я исхожу из предположения
// что после ввода и проверок в str_v находится фамилия студента, которого надо найти в базе
clrscr;
Writeln('Введите ФИО студента ');
readln(Str_v);
Chek_DL_SL(Str_v, 15);
Chek_FIO(Str_v);
if f1 = false then
write(' ');
until (f1 = true) and (f2=true);

// Вот от этой фамилии отсекаешь 'a', если она там есть
if str_v[length(str_v)]= 'а' then
test_fio:=copy(str_v, 1, length(str_v)-1)
else
test_fio:=str_v;

K:=0;
reset(F);
print_shapka; // Выводишь ДО ЦИКЛА шапку
while not EoF (F) do
begin
read(F,S); // а потом в цикле сравниваешь текущую фамилию с test_fio и test_fio + 'a'
if (S.FIO_Stud = test_fio) or (S.FIO_Stud = test_fio + 'а') then
begin
k:=1;
writeln;
Write( #179);
Write( S.FIO_Stud:16);
Write( #179);
Write( S.Stip:9);
Write( #179);
Write( S.FIO_mum:14);
Write( #179);
Write( S.zp_mum:8);
Write( #179);
Write( S.FIO_ot:14);
Write( #179);
Write( S.zp_ot:8);
Write( #179);
writeln;
end;
end;
close(F);
Osh;
if k=0 then
writeln('Студентов с фамилией ',str_v, ' не найдено' );
readkey;
clrscr;
end
else
begin
clrscr;
Writeln('Файл пуст. Записи не найдены');
close(F);
osh;
readkey;
clrscr;
end;
end;
Извини, но разбираться, где ты там описываешь все переменные (и почему переменные не описываются как можно ближе к месту использования - это первое условие для написания менее глючной программы, а ты все норовишь затолкать их в другой модуль, ибо в этом же я подобных переменных не обнаружил) мне лень, да и не хочется. Неинтересно это, я тебе указывал уже на ошибки, ты В ТОЧНОСТИ их повторяешь. Как об стену горох. На фиг мне, спрашивается, опять тут расписывать на десяток страниц, КАК НАДО, если ты делаешь КАК ПОПАЛО???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 21:15
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name