1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
работа с текстовыми записями файлами, перечень судов с указанием главного двигателя
требуется создать в текстовом редакторе входной текстовой файл input.txt, куда следует поместить файл содержащий указанную в задании информацию. Далее необходимо разработать структуированнную программу,которая должна прочить данные из этого файла в оперативную память компьютера,осущиствить преобразование этой информации и вывести в требуемой форме в выходной текстовой форме output.txt
HELP!!!!!!!!!!
input.txt: kolomna-MAN; lukhvitsy - MAN; ulan bator - MAN ;novozybkov-SULTZER; boris korniliv - sultzer; vyborg - MAN ; mravincki -MAN Output.txt: MAN(mravincki,kolomna,lukhvitsy,vyborg);SULTZER(boris korniliv,novozybkov)
const n = 100; type rec = record ix_drive: integer; name: string; end;
var i_drive, i_ship: integer; drive: array[1 .. n] of string; ship: array[1 .. n] of rec;
procedure sort_by_drive(var arr: array of rec; const n: integer); var i, j: integer; T: rec; begin for i := 1 to n do for j := n downto i+1 do if arr[Pred(j) - 1].ix_drive < arr[j - 1].ix_drive then begin T := arr[Pred(j) - 1]; arr[Pred(j) - 1] := arr[j - 1]; arr[j - 1] := T; end; end;
function trim(s: string): string; begin while (s[1] = ' ') and (s <> '') do delete(s, 1, 1); while (s[length(s)] = ' ') and (s <> '') do delete(s, length(s), 1);
trim := s; end;
function upstr(s: string): string; var i: integer; begin s := trim(s); for i := 1 to length(s) do s[i] := upcase(s[i]); upstr := s; end;
procedure add_new(s: string); var i: integer; found: boolean; p: integer; begin i := 1; found := false; p := pos('-', s); while (i <= i_drive) and (not found) do if drive[i] = upstr(copy(s, succ(p), 255)) then found := true else inc(i);
if not found then begin inc(i_drive); drive[i_drive] := upstr(copy(s, succ(p), 255)); i := i_drive; end; inc(i_ship); with ship[i_ship] do begin ix_drive := i; name := trim(copy(s, 1, pred(p))); end; end;
var fin, fout: text; s: string; i, p: integer;
begin assign(fin, 'input.txt'); reset(fin); i_drive := 0; i_ship := 0;
while not eof(fin) do begin readln(fin, s); repeat p := pos(';', s); if p <> 0 then begin add_new(copy(s, 1, p - 1)); delete(s, 1, p); end; until p = 0; if s <> '' then add_new(s); end;
sort_by_drive(ship, i_ship);
for i := 1 to i_ship do begin if (i = 1) or (ship[i].ix_drive <> ship[i-1].ix_drive) then begin if i > 1 then write('); '); write(drive[ship[i].ix_drive], '(') end else write(', '); write(ship[i].name); end; write(');');
close(fin); end.
напечатает тебе результат на экране... Доделай так, чтобы этот результат выводился в файл...