![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Grey-99 |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите пожалуйста с этой программой
![]() Задача:Создать текстовый файл, в котором содержаться сведения о рабочих( Фамилия, Инициалы, Зарплата) К примеру: Петров ИИ 1200 Сидоров ПР 2000 Попов КП 3000 Надо считать эти записи, и отсортировать по зарплате. Использовать процедуры. Вот такие пероги. Если кто может помочь, помогите пожалуйста. Сообщение отредактировано: Grey-99 - 27.12.2006 16:31 |
![]() ![]() |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Помогите пожалуйста разобраться в программе В какой программе? Текста Вашей программы не наблюдаю. |
Grey-99 |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Просто я не знаю как написать процедуру обработки текстового файла, по-этому и обратился за помощью к знающим людям
Вот процедура доступа 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. Сообщение отредактировано: Grey-99 - 27.12.2006 16:16 |
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Файл обязательно текстовый и каждая строка в нем имеит вид:
Фиаимия <пробел> Иницалы <пробел> Зарплата ? -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Grey-99 |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
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
Val(
Copy( Copy(s, Pos(' ', s) + 1, 255), POS(' ',Copy(s, Pos(' ', s) + 1, 255)),255),
value,
e);
GetMoney := value;
end;
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.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Grey-99 |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо тебе огромное
![]() |
Grey-99 |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот этаже прога(но эна просто считывает записи из текстового файла и выводит на экран), но она не хочет выводить на экран записи, в чем ошибка?
![]() 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 |
![]()
Сообщение
#9
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
f: text;
Почему файл делаешь текстовым? Читаешь ты его ведь в переменную типа base, а значит и файл должен быть типизированным.. ![]() f: file of base
Цитата но эна просто считывает записи из текстового файла и выводит на экран А так не пойдёт, с текстовые и работать надо по-другому - читать не в переменную типа base, а в строку, потом ее анализировать (разделять на компоненты) и только после этого присваивать их соответственным полям base . Сообщение отредактировано: Bokul - 27.12.2006 18:53 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Grey-99 |
![]()
Сообщение
#10
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: ![]() ![]() ![]() |
[/quote] А так не пойдёт, с текстовые и работать надо по-другому - читать не в переменную типа base, а в строку, потом ее анализировать (разделять на компоненты) и только после этого присваивать их соответственным полям base . [/quote] Подскажи пожалуйста, что именно мне нужно исправить ![]() |
Bokul |
![]()
Сообщение
#11
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Grey-99, тебе же klem4 уже написал рабочий вариант программы с текстовыми файлами.
![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
![]() ![]() |
![]() |
Текстовая версия | 1.08.2025 18:20 |