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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2016, 16:45   #1
Korban
Пользователь
 
Регистрация: 02.11.2016
Сообщений: 26
По умолчанию Составление программы с использованием записей - Pascal ABC

Пусть данный массив, содержащий сведения о книгах. Сведения о каждой книге - это фамилия автора, название и год издания:
- найдите названия книг данного автора, изданных до 1977 года;
- определите, есть ли книга с названием "Информатика"; если да, то сообщите год издания книги, если таких книг несколько, найти их количество.
Korban вне форума Ответить с цитированием
Старый 24.11.2016, 22:50   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Немного усложнил конечно, не без этого будет выглядеть не очень))

Спасибо = весы

Код:
program books;
uses crt;
type 
TRec=record
fam:string[15];
names_books:string[30];
god_izd:integer;
end;

var 
i:integer=0;
count:integer;
mass:array of TRec;

function xUpCase(strok:string):string;
var i:integer;
begin
result:='';
 for i:=1 to length(strok) do result:=result+upcase(strok[i]); 
end;

//добавление записей
procedure add_record;
begin
writeln('Zapis No',i+1);
write ('input familia: ...');
readln(mass[i].fam);
write ('input god_izdan: ...');
readln(mass[i].god_izd);
write ('input names_books: ...');
readln(mass[i].names_books);
writeln;
end;

procedure print_record; 
begin
writeln('Zapis No',i+1);
writeln ('familia: ',mass[i].fam);
writeln ('god_izdan: ',mass[i].god_izd);
writeln ('Names_books: ',mass[i].names_books);
writeln;
end;



//основная часть
var obrazec:STRING;
    keys:byte;
    count_record:word;
    menu:boolean;
begin 
 menu:=false;
while not menu do
begin
clrscr;
writeln('1 - Add record to array');
writeln('2 - Search to obrazec (informatika)');
writeln('3 - print books 1977');
writeln('4 - print records ');
writeln('0 - Exit');
readln(keys);

clrscr; //чистка экрана

 case keys of
 1: begin  
      writeln('Print count records...');
      readln(count_record); 
      SetLength(mass,count_record);      
      for i:=0 to count_record-1 do
       add_record;
       writeln('Massiv zapolnen! Vsego: ',count_record,' zapisei');          
    end;
 2: begin
     writeln('1 - поиск по слову "информатика"');
     writeln('2 - поиск по любому наименованию книги');
     readln(keys);
     
     if keys=1 then  
         obrazec:='информатика'         
         else
         begin
         write('Введите образец поиска...');
         readln(obrazec);
         end;
         
       count:=0;
       obrazec:=xupcase(obrazec);
          for i:=0 to length(mass)-1 do 
            if pos(obrazec,xupcase(mass[i].names_books))=1 then //приведем к общему регистру для сравнения
            begin
             inc(count);
             writeln('Запись номер ',count);
             writeln('Наименование книги: ',mass[i].names_books,'| Год издания ',mass[i].god_izd,'|');    
            end;  
 if count>1 then writeln('Всего найдено записей: ',count); 
 if count=0 then writeln('Записей не найдено!');

     
    end;
 3: begin
       write('Print Avtors...');
       readln(obrazec);
        count:=0;
       obrazec:=xupcase(obrazec);
          for i:=0 to length(mass)-1 do 
            if (pos(obrazec,xupcase(mass[i].fam))=1) and(mass[i].god_izd<=1977) then //приведем к общему регистру для сравнения
            begin
             inc(count);
             writeln('Запись номер ',count);
             writeln('Наименование книги: ',mass[i].names_books,'| Год издания ',mass[i].god_izd,'| Фамилия ',mass[i].fam,' |');    
            end;  
 if count>1 then writeln('Всего найдено записей: ',count); 
 if count=0 then writeln('Записей не найдено!');
    end;
 4: begin
      for i:=0 to count_record-1 do
      print_record;     
    end; 
  0: 
 begin 
 menu:=true; 
 mass:=nil;end;
 end;
 writeln('Press ENTER'); 
 readln;
end;
writeln('GoodBye!');
end.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 24.11.2016, 22:59   #3
Korban
Пользователь
 
Регистрация: 02.11.2016
Сообщений: 26
По умолчанию

Спасибо
Korban вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить код На Pascal ABC (обработка типизированного файла записей) ALEXandr20333 Паскаль, Turbo Pascal, PascalABC.NET 10 25.05.2014 20:12
Структуры данных - список на основе записей / Pascal ABC Andrew5674 Паскаль, Turbo Pascal, PascalABC.NET 0 06.05.2014 22:07
pascal ABC. программирование с использованием процедур alexandrkamarov Помощь студентам 1 21.03.2014 20:17
Составление программы с использованием массива структур (короче record:)) messiman Помощь студентам 0 17.01.2013 17:51
База данных в Pascal ABC. Добавление и удаление записей. happypsu Помощь студентам 0 11.04.2012 01:07