Задача:Создать текстовый файл, в котором содержаться сведения о рабочих( Фамилия, Инициалы, Зарплата) К примеру: Петров ИИ 1200 Сидоров ПР 2000 Попов КП 3000
Надо считать эти записи, и отсортировать по зарплате. Использовать процедуры. Вот такие пероги. Если кто может помочь, помогите пожалуйста.
Ozzя
27.12.2006 19:45
Цитата
Помогите пожалуйста разобраться в программе
В какой программе? Текста Вашей программы не наблюдаю.
Grey-99
27.12.2006 19:51
Просто я не знаю как написать процедуру обработки текстового файла, по-этому и обратился за помощью к знающим людям
Вот процедура доступа outputfile:
Цитата
type base = RECORD name, ini:string; money: integer; END;
mass = array [1..n] of string;
var people : array [1..100] of base; nm : base; f: text; m:mass i,j:integer;
procedure outputfile(var q:integer); var i:integer; begin assign (f,'D:\Delphi7\Rabotnik.txt'); reset(f); i:=1; repeat readln(f,m[i]); inc(i); until eof(f); close (f); q:=i; end;
begin
outputfile(p); readln; end.
klem4
27.12.2006 20:39
Файл обязательно текстовый и каждая строка в нем имеит вид:
Фиаимия <пробел> Иницалы <пробел> Зарплата
?
Grey-99
27.12.2006 20:40
Цитата(klem4 @ 27.12.2006 16:39)
Файл обязательно текстовый и каждая строка в нем имеит вид:
Фиаимия <пробел> Иницалы <пробел> Зарплата
?
да
klem4
27.12.2006 21:07
uses crt;
const max_records = 100;
type
TStrings = array[1..max_Records] of String;
TFile = Text;
function ReadData(const fName: String; var S: TStrings): Integer; var i: Integer; f: TFile; begin
assign(f, fName); reset(f);
i := 0;
while not(eof(f)) do begin inc(i); readln(f, S[i]); end;
close(f);
ReadData := i; end;
function GetMoney(const S: String): Integer; var value, e: Integer; begin
procedure Sort(var S: TStrings; const size: Integer); var i, j: Integer; temp: String; begin for i := size downto 2 do for j := 1 to i - 1 do if GetMOney(S[j]) <= GetMoney(S[j + 1]) then begin temp := S[j]; S[j] := S[j + 1]; S[j + 1] := temp; end; end;
procedure WriteToFile(const fName: String; const S: TStrings; const size: Integer); var f: TFile; i: Integer; begin assign(f, fName); rewrite(f); for i := 1 to size do writeln(f, S[i]); Close(f); end;
var S: TStrings; size: Integer; begin size := ReadData('C:\forum.txt', S); Sort(S, size); WriteToFile('C:\forum.txt', S, size); end.
Grey-99
27.12.2006 21:12
Спасибо тебе огромное
Grey-99
27.12.2006 22:34
Вот этаже прога(но эна просто считывает записи из текстового файла и выводит на экран), но она не хочет выводить на экран записи, в чем ошибка?
program S4itivaemIzFaila;
{$APPTYPE CONSOLE}
uses SysUtils;
const n=1000; type base = RECORD name, ini:string; money: integer; END; mass = array [1..n] of string;
var people : array [1..100] of base; nm : base; f: text; m,pr:mass; s,maxclovo:string; i,j,k,p:integer;
procedure outputfile(var q:integer); var i:integer; begin assign (f,'D:\Delphi7\Student.txt'); reset(f); i:=1; repeat readln(f,m[i]); inc(i); until eof(f); close (f); q:=i; end;
Procedure Obrabotka( Var q:integer); Var a:string; i,k,j,r:integer; Begin For j:=1 to q do begin i:=1; Writeln(j,' '); a:=pr[j]+' '; Repeat k:=Pos(' ',a); if i=1 then begin people[j].name:=copy(a,1,k-1); write(' ':1,people[j].name:6); end; if i=2 then begin people[j].ini:=copy(a,1,k-1); write(' ':1,people[j].ini:6); end; if i=3 then begin val(copy(a,1,k-1),r,r); people[j].money:=r; write(people[j].money:6); end; inc(i); delete(a,1,k); until k = 0; writeln; end; End;
BEGIN Writeln('Obshiu* spisok rabotnikov:'); Writeln;
outputfile(p); Obrabotka(p); Readln;
{ TODO -oUser -cConsole Main : Insert code here } END.
Bokul
27.12.2006 22:52
f: text;
Почему файл делаешь текстовым? Читаешь ты его ведь в переменную типа base, а значит и файл должен быть типизированным..
f: file of base
Цитата
но эна просто считывает записи из текстового файла и выводит на экран
А так не пойдёт, с текстовые и работать надо по-другому - читать не в переменную типа base, а в строку, потом ее анализировать (разделять на компоненты) и только после этого присваивать их соответственным полям base .
Grey-99
27.12.2006 23:05
[/quote] А так не пойдёт, с текстовые и работать надо по-другому - читать не в переменную типа base, а в строку, потом ее анализировать (разделять на компоненты) и только после этого присваивать их соответственным полям base . [/quote]
Подскажи пожалуйста, что именно мне нужно исправить
Bokul
27.12.2006 23:18
Grey-99, тебе же klem4 уже написал рабочий вариант программы с текстовыми файлами. Что еще надо?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.