Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2008, 15:08   #1
Fuaran8989
 
Регистрация: 14.04.2008
Сообщений: 6
По умолчанию [Pascal]типизированный файл+записи

Имеется типизированный файл, состоящий из записей следующей структуры: ФАМИЛИЯ, ГОД РОЖДЕНИЯ.
Создать новый файл и поместить в него записи о людях, возраст которых не попадает в указанный диапазон. Определить средний возраст людей, записи которых помещены во второй файл. Продублировать вывод на консоли.
Fuaran8989 вне форума Ответить с цитированием
Старый 14.04.2008, 19:13   #2
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Стрелка

Вот моё решение:

Код:
Uses CRT;
Type TStud = Record
    Fam :String[50];
    God :Integer;
End;

Var Ext :Boolean;

Procedure CreatFile;
Var S :String; I :Integer;
    Key :Char;
    F :File of TStud; F11 :TStud;
begin
 ClrScr;
  WriteLn(' - Sozdanie faila bazi -');
 WriteLn;
  Write('Vvedite pyt` k failu: '); Readln(S);
 Assign(F, S);
  {$I-}
 Rewrite(F);
  {$I+}
 IF IOResult<>0 Then Exit;
  I := 0;
 While True Do
 begin
   Inc( I );
  WriteLn(I, ':');
  Write('Vvedite Familiy: '); ReadLn(F11.Fam);
  Write('Vvedite God: '); ReadLn(F11.God);
   Write(F, F11);
  Writeln('            !!!! CHTOBI VIYTI, NAZHMI "ESC`APE" !!!!');
 IF ReadKey=#27 Then Break;
 end;
 Close(F);
end;

Procedure ExtractMan;
Var S,S1 :String; I :Integer;
    F,F1 :File of TStud; F11 :TStud;
    Min,Max,Year :Integer;
    Sredn :Real;
begin
 ClrScr;
  WriteLn(' - Sozdanie faila bazi -');
 WriteLn;

 Write('Vvedite pyt` k Ishodnomu failu: '); Readln(S);
 Assign(F, S);
  {$I-}
 Reset(F);
  {$I+}
 IF IOResult<>0 Then Exit;
 {---------------------------------------}
 Write('Vvedite pyt` k Vihodnomu failu: '); Readln(S1);
 Assign(F1, S1);
  {$I-}
 ReWrite(F1);
  {$I+}
 IF IOResult<>0 Then Exit;
 {---------------------------------------}
  Write('Vvedite nizhne znacheniya vozrosta  (*MIN*): '); ReadLn(Min);
  Write('Vvedite verhnee znacheniya vozrosta (*MAX*): '); ReadLn(Max);
  Write('Vvedite segodnyashniy *God*: '); ReadLn(Year);
 {---------------------------------------}
 WriteLn('------------------------------------------------------------------');
  I := 0;
  Sredn := 0;

 While Not EOF(F) Do
 begin
  Read(F, F11);
   IF ((Year - F11.God)>=Min)And((Year - F11.God)<=Max) Then
   begin
    Inc(I);
    Write(F1, F11);
    WriteLn('[', I, '] ', F11.Fam, ' = ', F11.God, 'Ј;');
    Sredn := Sredn + F11.God;
   end;
 end;
   Sredn := Year - (Sredn / I); { ‘।*Ё© ў®§а бв }
   Writeln('Sredniy vozrast ludey iz faila "', S1, '"=',  Sredn:3:1);
 Close(F);
 Close(F1);
  Readln;
end;

begin
 Ext := False;
  While Ext<>True DO
  Begin
 ClrScr;
 WriteLn('Viberite rezhim!');
 WriteLn('1 - Sozdat` fail bazi,');
 WriteLn('2 - Sozdat` fail otchet bazi,');
 WriteLn('3 - Vihod.');
   CASE ReadKey OF
 '1': CreatFile;
 '2': ExtractMan;
 '3',#27: Ext := True;
   END;
  End;
end.
___________________________________ ______________________________
++Me
Alter вне форума Ответить с цитированием
Старый 14.04.2008, 19:37   #3
Fuaran8989
 
Регистрация: 14.04.2008
Сообщений: 6
По умолчанию

а как нить без этого можно обойтись а то слишком навороченный код...

begin
Ext := False;
While Ext<>True DO
Begin
ClrScr;
WriteLn('Viberite rezhim!');
WriteLn('1 - Sozdat` fail bazi,');
WriteLn('2 - Sozdat` fail otchet bazi,');
WriteLn('3 - Vihod.');
CASE ReadKey OF
'1': CreatFile;
'2': ExtractMan;
'3',#27: Ext := True;
END;
Fuaran8989 вне форума Ответить с цитированием
Старый 14.04.2008, 22:53   #4
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Вопрос

Скажите мне что вас неустраивает в коде. Что именно вы хотите оставить?
То что вы хотите убрать, обычное меню.
Если вам надо вызвать ТОЛЬКО запись во второй файл выходных данных, то можно так:

Код:
............................................
begin
 ExtractMan;
end.
Alter вне форума Ответить с цитированием
Старый 30.11.2008, 14:01   #5
Witch:(
Новичок
Джуниор
 
Аватар для Witch:(
 
Регистрация: 30.11.2008
Сообщений: 1
По умолчанию

Помогите, пожалуйста. Написала прогу, работает не так как надо. Вот сама задача.
Информация о продаже автомобилей содержит следующие данные: марка, цвет, год выпуска, объем двигателя, цену.
Написать программу, в которой:
обеспечен ввод данных с клавиатуры и сохранение их в типизированном файле;
организовать выборку из типизированного файла информации об автомобилях заданной марки и ценой ниже средней, вывод данных о них на экран и сохранение в текстовом файле.
моя прога:
Program Z5;
type{struktura dannix}
t_avto=record
marka,color:string;
val:integer;
gv,price:real;
end;
var
marka:t_avto;
f:file of t_avto;
ft:text;
ans:char;
n:integer;
zm:string;
s:real;
begin
assign(f,'avto.dat');
rewrite(f);
repeat
{}
with marka do
begin
write('marka ');readln(marka);
write('color ');readln(color);
write('gv');readln(gv);
write('val');readln(val);
write('price');read(price);
end;
write(f,marka);
write('vvod okon4en?');
readln(ans);
until(ans='Y')or(ans='y');
close(f);
write('zadannaya marka ');readln(zm);
n:=0;s:=0;
reset(f);
while not eof(f) do
begin
read(f,marka);
if(marka.marka=zm) then
begin
n:=n+1;
s:=s+marka.price;
end;
end;
s:=s/n;
assign(ft,'avto.txt');
rewrite(ft);
reset(f);
while not eof(f) do
begin
read(f,marka);
with marka do
if (marka=zm)and(price<s)then
begin
writeln(marka,color,gv,val,price);
writeln(ft,marka,color,gv,val,price );
end;
end;
close(ft);
end.
Witch:( вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal.Записи и файл!!! W_P Помощь студентам 2 20.05.2008 22:01
задача на записи Pascal kitty Помощь студентам 9 18.04.2008 18:14
Экспорт записи в *.dbf файл Galgi БД в Delphi 2 20.02.2008 07:02
Как создать типизированный файл Kosya4ok Паскаль, Turbo Pascal, PascalABC.NET 3 16.12.2007 09:29
Ошибка при записи в файл txt Alex_Ku Помощь студентам 2 28.04.2007 12:15