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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2012, 10:01   #1
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
Лампочка Файлы.Найти раздел, в котором больше всего книг

Вот часть программы
Код:
procedure z2;
begin
  clrscr;
  textcolor(7);
  writeln('Razdel, v kotorom bolshe vsego knig');
  reset(f);
  k := 0;
  max := 0;
  while k < filesize(f) do
  begin
    seek(f, k);
    read(f, b);
    s := b.raz;
    k := k + 1;
    seek(f, 0);
    g := 0;
    while not eof(f) do
    begin
      read(f, b);
      if s = b.raz then
        g := g + 1;
    end;
    if max < g then
    begin
      max := g;
      smax := s;
    end;
  end;
  close(f);
  writeln(smax);
end;
Преподаватель говорит, что не правильно!
Camelot_2012 вне форума Ответить с цитированием
Старый 14.06.2012, 10:11   #2
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
По умолчанию

Код:
program faili; 
uses crt; 
type book=record 
   avtor: string; 
   nazv: string; 
   god: integer; 
   razdel: integer; 
   end; 
const n=20; 
var f: file of book; 
    otv: char; 
    a: book; 
    b: array [1..n] of book; 
i,min,imin,k,j: integer; 
y: book; 
begin 
clrscr; 
assign (f,'catalog.dat'); 
rewrite (f); 
repeat 
writeln ('vvedite avtora'); 
readln (a.avtor); 
writeln ('vvedite nazvanie'); 
readln (a.nazv); 
writeln ('vvedite god'); 
readln (a.god); 
writeln ('vvedite razdel'); 
readln (a.razdel); 
write (f,a); 
writeln ('Prodolzhenie - lubaia knopka, vixod-esc'); 
otv:= readkey; 
until ord(otv)=27; 
close (f); 
clrscr; 
reset (f); 
repeat 
read (f,a); 
writeln (a.avtor:15, a.nazv:15,a.god:6,a.razdel:10); 
until eof (f); 
{sortiruem po razdelu} 
for i:=1 to n-1 do 
begin 
min:=b[i].razdel; 
imin:=i; 
for j:=i+1 to n do 
if b[j].razdel<min then 
begin 
min:=b[j].razdel; 
imin:=j; 
end; 
y:=b[imin]; 
b[imin]:=b[i]; 
b[i]:=y; 
end; 
clrscr; 
writeln ('avtor':15,'nazvanie':15,'god':7,'razdel':15); 
for i:=1 to n do 
with b[i] do 
writeln (avtor:15,nazv:15,god:7,razdel:15); 
{ishem razdel gde bolshe knig} 
k:=0; 
for i:=1 to n do 
begin 
k:=k+1; 
if (b[i+1].razdel<>b[i].razdel) or (i=n) then 
begin 
writeln ('v razdele  ',b[i].razdel,'  kol-vo knig  ',k); 
k:=0; 
end; 
end; 

repeat until keypressed; 
end.
Camelot_2012 вне форума Ответить с цитированием
Старый 14.06.2012, 11:08   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А это вы к чему код запостили?
Поделились на будущее правильным кодом решения задачи?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.06.2012, 13:25   #4
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
А это вы к чему код запостили?
Поделились на будущее правильным кодом решения задачи?
Код:
program z_11_3;
uses
  crt;
type
  book = record
    avt: string[20];
    naz: string[20];
    god: 1..2012;
    raz: integer;
  end;
var
  f, f1, f2: file of book;
  b: book; 
  k, g, max, s, smax, z: integer;
  pun: array[1..6] of string;
  otv, ch: char;
  c: char;
procedure z1;
begin
  clrscr;
  textcolor(7);
  rewrite(f);
  repeat
    writeln('Vvedite avtora');
    readln(b.avt);
    writeln('Vvedite nazvanie');
    readln(b.naz);
    writeln('Vvedite god');
    readln(b.god);
    writeln('Vvedite razdel');
    readln(b.raz);
    write(f, b);
    writeln('Zakonchit?');
    readln(otv);
  until (otv = 'y') or (otv = 'Y');
  close(f);
end;
procedure z2;
begin
  clrscr;
  textcolor(7);
  writeln('Razdel, v kotorom bolshe vsego knig');
  reset(f);
  k := 0;
  max := 0;
  while k < filesize(f) do
  begin
    seek(f, k);
    read(f, b);
    s := b.raz;
    k := k + 1;
    seek(f, 0);
    g := 0;
    while not eof(f) do
    begin
      read(f, b);
      if s = b.raz then
        g := g + 1;
    end;
    if max < g then
    begin
      max := g;
      smax := s;
    end;
  end;
  close(f);
  writeln(smax);
end;
procedure z3;
begin
  clrscr;
  textcolor(7);
  writeln('Po zadannomu razdelu zanesti v otdelniy fail svedeniya o vseh ego knigah');
  writeln('Vvedite razdel');
  read(k);
  assign(f1, 'data.dat');
  rewrite(f1);
  reset(f);
  while not eof(f) do
  begin
    read(f, b);
    if b.raz = k then
      write(f1, b);
  end;
  close(f);
  close(f1);
  readln;
end;
procedure z4;
begin
  clrscr;
  textcolor(7);
  writeln('Ydalit iz faila svedeniya o knigah, god izdaniya kotorih menshe zadannogo');
  writeln('Vvedite god');
  read(g);
  assign(f2, 'del.dat');
  rewrite(f2);
  reset(f);
  while not eof(f) do
  begin
    read(f, b);
    if b.god >= g then
      write(f2, b);
  end;
  close(f);
  close(f2);
  erase(f);
  rewrite(f);
  reset(f2);
  while not eof(f2) do
  begin
    read(f2, b);
    write(f, b);
  end;
  close(f);
  close(f2);
  erase(f2);
end;
procedure z5;
var
  f, f1: file of book;
  b: book;
begin
  assign(f, 'catalog.dat');
  assign(f1, 'data.dat');
  writeln('Prosmotr v tabl forme (F)');
  reset(f);
  while not eof(f) do
  begin
    read(f, b);
    writeln('Razdel: ', b.raz, '; Avtor: ', b.avt, '; Nazvanie: ', b.naz, '; God: ', b.god);
  end;
  close(f);
  writeln;
  writeln('Prosmotr v tabl forme (F1)');
  reset(f1);
  while not eof(f1) do
  begin
    read(f1, b);
    writeln('Razdel: ', b.raz, '; Avtor: ', b.avt, '; Nazvanie: ', b.naz, '; God: ', b.god);
  end;
  close(f1);
end;
procedure menu(var g: integer);
const
  up = #72{#38};
  down = #80{#40};
var
  g1: integer;
begin
  g1 := g;
  if c = down then
  begin
    g := g + 1;
    if g > 6 then
      g := 1;
  end;
  if c = up then
  begin
    g := g - 1;
    if g < 1 then
      g := 6;
  end;
  if (c = down) or (c = up) then
  begin
    textcolor(10);
    gotoxy(1, g);
    writeln(pun[g]);
    textcolor(15);
    gotoxy(1, g1);
    writeln(pun[g1]);
  end;
end;
begin
  pun[1] := ' Vvesti knigi ';
  pun[2] := ' Naiti razdel, v kotorom bolshe vsego knig ';
  pun[3] := ' Po zadannomu razdelu zanesti v otdelniy fail svedeniya o vseh ego knigah ';
  pun[4] := ' Ydalit iz faila svedeniya o knigah, god izdaniya kotorih menshe zadannogo ';
  pun[5] := ' Obespechit prosmotr faila v tablichnom vide ';
  pun[6] := ' Vihod ';
  repeat
    clrscr;
    g := 1;
    textcolor(15);
    for k := 1 to 6 do
      writeln(pun[k]);
    repeat
      c := readkey;
      menu(g);
    until c = #13;
    
    case g of
      1:
        begin
          clrscr;
          z1;
          writeln('Nazhmite Esc dlya vhoda v glavnoe menu');
          repeat
            c := readkey;
          until c = #27;
        end;
      
      2:
        begin
          clrscr;
          z2;
          writeln('Nazhmite Esc dlya vhoda v glavnoe menu');
          repeat
            c := readkey;
          until c = #27;
        end;
      
      3:
        begin
          clrscr;
          z3;
          writeln('Nazhmite Esc dlya vhoda v glavnoe menu');
          repeat
            c := readkey;
          until c = #27;
        end;
      
      4:
        begin
          clrscr;
          z4;
          writeln('Nazhmite Esc dlya vhoda v glavnoe menu');
          repeat
            c := readkey;
          until c = #27;
        end;
      
      5:
        begin
          clrscr;
          z5;
          writeln('Nazhmite Esc dlya vhoda v glavnoe menu');
          repeat
            c := readkey;
          until c = #27;
        end;
    end;
  until g = 6;
  clrscr;
  writeln('Programma zavershena!');
end.
Camelot_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить cлово, в котором больше всего гласных букв. [Алёнка] Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2011 13:02
Определить какой краски было потрачено больше всего Maxym_93 Паскаль, Turbo Pascal, PascalABC.NET 1 30.04.2011 00:47
Где найти исходники на Java( 1 проект - больше 1000 классов, 2 проект - больше 100, 3 проект - больше 10) Pti44ka Общие вопросы по Java, Java SE, Kotlin 2 09.09.2010 21:31
Что вас больше всего раздражает в этом разделе ? (обязательно к прочтению всем новичкам) бедный_студент Помощь студентам 6 02.05.2009 14:47