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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2008, 03:24   #1
Igor571
 
Регистрация: 01.12.2008
Сообщений: 3
Злость Обработка массивов данных Pascal

Библиографический список Название литературного источника
Автор
Год издания
Категория (книга, статья)


Вывод на экран списка статей, опубликован-ных после заданного года



program lab7;
const nmax=30;
type tlit=record
name:string[20];
avtor:string[20];
year:integer;
kategor:string[15];
end;

tliter = array [1..nmax] of tlit;
var liter:tliter;
year:integer;
f:text;
fname: string[30];
n:integer;
m:integer;
i:integer;
cont:char;
tmp:tlit;

{********************************** *************** *********}
procedure screenlit(var po:tliter; ng:integer;var vr:integer);
var i:integer;

begin

writeln('stati posle zadannoga goda');
for i:=1 to ng do
if po[i].year > vr then writeln(po[i].name,po[i].avtor,po[i].year,po[i].kategor);
end;
{********************************** *************** *********}
begin
writeln('Programma "Examen Vedomost" ');
writeln('1 - Sozdat novy file');
writeln('2 - Obrabotat gotovy file');
writeln('3 - Zavershit raboty programmy');
m:=1;

while m<>3 do
begin
writeln ('vvedute 1,2 ulu 3: '); readln(m);
case m of
{********************************** *************** *********}
1:
begin
write('vvedute uma faila ');
readln(fname);
assign (f,fname);
rewrite(f);
i:=1; cont:='y';
while cont='y' do
with tmp do
begin
writeln('vvedute dannue',i,'lit ');
write('name '); readln(name);
write(' avtor '); readln(avtor);
write ('year '); readln(year);
write (' kategor '); readln(kategor);

writeln(f,name:15,avtor:15,year:8,k ategor:10);
i:=i+1;
writeln('klavuwa y dla prodolzenu9i, druga9i vuxod:') ;
readln(cont);
end;
close(f);
end;

{********************************** *************** *********}

2:
begin
write('enter file name ');
readln(fname);
assign(f,fname);
reset(f);
i:=1;
while not eof(f) do
begin with liter [i] do
readln (f,name,avtor,year,kategor);
i:=i+1;
end;

close(f);
n:=i-1;

writeln('vvedute year');
readln(year);
for i:=1 to n do
with stat[i] do

for i:=1 to n do
with liter [i] do
writeln (name:15,avtor:20,year:4,kategor:10 );
screenlit (liter,n,year);


end;
end;
end;
end.



Что-то она у меня не пашет

Последний раз редактировалось Igor571; 01.12.2008 в 03:30.
Igor571 вне форума Ответить с цитированием
Старый 01.12.2008, 10:52   #2
DannerDOS
Пользователь
 
Регистрация: 01.12.2008
Сообщений: 27
По умолчанию

Столько ошибок что редактировать неохото...
DannerDOS вне форума Ответить с цитированием
Старый 01.12.2008, 10:55   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Надо было самму писать программу, а не делать аппликацию из трех программ, хотя бы заголовки сменили, да транслит с украинского на русский переделали. Немного изменил Ваш код, немного добавил, разбирайтесь. Программа работает, тестировал, поэтому, если что сделаете не так, просьба меня не опускать.
Код:
program lab7;
uses crt;
const nmax=30;
type Tlit=record
          name:string[20];
          avtor:string[20];
          year:integer;
          kategor:string[15];
         end;
Tliter = array [1..nmax] of Tlit;
var liter:Tliter;
    tmp:Tlit;
    f:file of Tlit;
    fname: string[30];
    n,i,year:integer;
    m:byte;
    c:char;
    label l1;
{************************************************* *********}
procedure screenlit(ng,vr:integer;var po:tliter);
var i:integer;
begin
writeln('stati posle zadannoga goda');
for i:=1 to ng do
if (po[i].year > vr)and(po[i].kategor='statja') then
writeln(po[i].name,' ',po[i].avtor,' ',po[i].year,' ',po[i].kategor);
end;
{************************************************* *********}
begin
clrscr;
writeln('Programma "Bibliographicheskij spisok" ');
l1:
writeln('1 - Sozdat novy file');
writeln('2 - Obrabotat gotovy file');
writeln('3 - Zavershit raboty programmy');
repeat
writeln ('vvedute 1,2 ili 3: ');
readln(m);
until m in [1..3];
case m of
{************************************************* *********}
1:
begin
write('vvedute imya faila: ');
readln(fname);
assign (f,fname);
rewrite(f);
n:=0;
repeat
n:=n+1;
writeln('vvedute dannue ',n,' lit:');
writeln('okonchanye vvoda Esc');
with liter[n] do
   begin
    write('name '); readln(name);
    write('avtor '); readln(avtor);
    write ('year '); readln(year);
    write ('kategor '); readln(kategor);
   end;
write(f,liter[n]);
c:=readkey;
until c=#27;
close(f);
goto l1;
end;

{************************************************* *********}

2:
begin
write('enter file name ');
readln(fname);
assign(f,fname);
reset(f);
n:=1;
while not eof(f) do
  begin
    read (f,liter[n]);
    n:=n+1;
  end;
close(f);
writeln;
writeln('vvedute year');
readln(year);
screenlit(n,year,liter);
readln;
goto l1;
end;
3:exit;
end;
end.
puporev вне форума Ответить с цитированием
Старый 01.12.2008, 11:02   #4
DannerDOS
Пользователь
 
Регистрация: 01.12.2008
Сообщений: 27
По умолчанию

На первый взгляд... приемлимо!
DannerDOS вне форума Ответить с цитированием
Старый 01.12.2008, 11:05   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

На три с плюсом, лучше нельзя, могут не понять.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. Заполнение массивов. Нужна помощь. blackberryx Помощь студентам 2 05.10.2008 21:11
Обработка файлов (Pascal) Дима82 Помощь студентам 10 02.06.2008 21:46
преобразование массивов при вводе данных greenkat Microsoft Office Excel 4 28.02.2008 19:21