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

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

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

 
 Ответить  Открыть новую тему 
> Обработка текстового файла, Помогите пожалуйста
сообщение
Сообщение #1





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

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


Помогите пожалуйста с этой программой mega_chok.gif

Задача:Создать текстовый файл, в котором содержаться сведения о рабочих( Фамилия, Инициалы, Зарплата)
К примеру:
Петров ИИ 1200
Сидоров ПР 2000
Попов КП 3000


Надо считать эти записи, и отсортировать по зарплате. Использовать процедуры.
Вот такие пероги. Если кто может помочь, помогите пожалуйста.

Сообщение отредактировано: Grey-99 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

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

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


Цитата
Помогите пожалуйста разобраться в программе

В какой программе?
Текста Вашей программы не наблюдаю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Просто я не знаю как написать процедуру обработки текстового файла, по-этому и обратился за помощью к знающим людям

Вот процедура доступа 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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Файл обязательно текстовый и каждая строка в нем имеит вид:

Фиаимия <пробел> Иницалы <пробел> Зарплата

?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Цитата(klem4 @ 27.12.2006 16:39) *

Файл обязательно текстовый и каждая строка в нем имеит вид:

Фиаимия <пробел> Иницалы <пробел> Зарплата

?


да
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





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

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


Спасибо тебе огромное good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





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

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


Вот этаже прога(но эна просто считывает записи из текстового файла и выводит на экран), но она не хочет выводить на экран записи, в чем ошибка? nea.gif


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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


f: text;

Почему файл делаешь текстовым? Читаешь ты его ведь в переменную типа base, а значит и файл должен быть типизированным.. smile.gif
f: file of base


Цитата
но эна просто считывает записи из текстового файла и выводит на экран

А так не пойдёт, с текстовые и работать надо по-другому - читать не в переменную типа base, а в строку, потом ее анализировать (разделять на компоненты) и только после этого присваивать их соответственным полям base .

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10





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

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



[/quote]
А так не пойдёт, с текстовые и работать надо по-другому - читать не в переменную типа base, а в строку, потом ее анализировать (разделять на компоненты) и только после этого присваивать их соответственным полям base .
[/quote]

Подскажи пожалуйста, что именно мне нужно исправить unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Grey-99, тебе же klem4 уже написал рабочий вариант программы с текстовыми файлами. blink.gif Что еще надо?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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