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

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

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

 
 Ответить  Открыть новую тему 
> работа с файлами, текстовый файл
Ez
сообщение 20.12.2005 21:28
Сообщение #1


Гость






Помогите плз решит задачку!!! rolleyes.gif
значит ест текстовий файл в н строк, в каждой строке:
фамилия имя оценки(например: Первий Вася 2 3 4).
надо создат новий фаил, в котором, в каждой строке, будут:
фамилия имя среднее арифметическоэ оценок(Прим.:Первий Вася 3).
Заранее большое спасибо!!!!!!
 К началу страницы 
+ Ответить 
klem4
сообщение 20.12.2005 22:55
Сообщение #2


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

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

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


В чем проблема ? Что уже готово ?

зы FAQ : Файлы
FAQ : Строки


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


Гость






nu eto ne forum, eto spisok ssilok....
spasibo!
smile.gif
 К началу страницы 
+ Ответить 
Гость
сообщение 21.12.2005 22:44
Сообщение #4


Гость






получилос вот что:
Код

program sraf;
type celovek=record
                  fam: string[6];
                 imia: string[2];
              sredaf: real;
                  end;

        var scitat: text;
              novij: zmogus;
           zapisat: file of zmogus;
ocenka, sum, sk: integer;

begin
assign(scitat, 'C:\dannij.txt');
assign(zapisat, 'C:\rezultat.rez');
reset(scitat);
rewrite(zapisat);

while not(eof(scitat))do
begin
     read(scitat, novij.fam);
     sum:=0;
     sk:=0;

while not eoln (scitat) do
     begin
     read(scitat, novij.ocenka);
     sum:=sum+ocenka;
     sk:=sk+1;
     end;
   readln(scitat);
   novij.sredaf:=sum/sk;
with (naujas) do
writeln(novij.fam, ' ',novij.sredaf);
end;

close(scitat);
close(zapisat);

end.



тольк чёт не работает... покажите плз где ошибки?
 К началу страницы 
+ Ответить 
klem4
сообщение 21.12.2005 23:37
Сообщение #5


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

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

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


привер обработки одной строки :

uses crt;
const s : string = 'Владимир Путин 2 3 3';
var
i,e,n : integer;
sr : single;
begin
i := 1;
while(not(s[i] in ['2'..'5'])) do begin
write(s[i]);
inc(i);
end;
sr := 0;
while(i<=length(s)) do begin
if s[i] in ['2'..'5'] then begin
val(s[i],n,e);
sr := sr + n;
end;
inc(i);
end;
sr := sr/3;
writeln(' : ',sr:2:2);
readln
end.



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


Гость






спаибо спасибо!
а как теперь сделат, чтоб он резултат(ну среднее арифметическое) в новий фаил записивал?
 К началу страницы 
+ Ответить 
klem4
сообщение 22.12.2005 19:56
Сообщение #7


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

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

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



reset(f_IN);
rewrite(f_OUT);
while(not(eof(f_IN))) do begin
readln(f_IN, s)
// тут делаешь что нужно со строкой;
writeln(f_OUT, s); // после обработки, записываешь новую строку в другой файл
end;


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


Гость






ясненько... спасибо....
ага... но если ето(обработку информации) сделат не через массив, а сразу через файл? я вроде пробовала, и вроде обрабативает, но не работает...
Код
while not eoln (scitat) do
     begin
     read(scitat, novij.ocenka);
     sum:=sum+ocenka;
     sk:=sk+1;
     end;
   readln(scitat);
   novij.sredaf:=sum/sk;
 К началу страницы 
+ Ответить 
klem4
сообщение 23.12.2005 8:37
Сообщение #9


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

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

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


Так.. постойка, ты сказал что у тебя файл тектовый и состоит из строк ... елси у тебя файл типизированный , то все делается гораздо проще !

uses crt;
const n=5;
type
TRec = record
name : string;
maks : array[1..3] of byte;
sr : single;
end;
TBase = array[1..20] of TRec;
TFile = file of TBase;

procedure Init(var b : TBase);
var
i,j : byte;
begin
for i := 1 to n do
with b[i] do begin
writeln('Rec ¹ ',i);
write('name : '); readln(name);
sr := 0;
for j := 1 to 3 do begin
write('maks ¹ ',j,' : ');
readln(maks[j]);
sr := sr + maks[j];
end;
sr := sr/3;
end;
end;
procedure ShowResult(b : TBase);
var
i : byte;
begin
for i := 1 to n do
with b[i] do writeln(name,' ',sr:3:2);
end;

var
f_in,f_out : TFile;
base : TBase;

begin
clrscr;
assign(f_in,'f_in.base');
rewrite(f_in);
Init(base);
write(f_in,base);
reset(f_in);
assign(f_out,'f_out.base');
rewrite(f_out);
read(f_in,base);
write(f_out,base);
close(f_in);
reset(f_out);
read(f_out, base);
ShowResult(base);
close(f_out);
readln
end.


основная чать такая большая для того чтобы ты показал что все данные записываешь , а потом читаешь из файлов.


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

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

 



- Текстовая версия 21.07.2025 9:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"