HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 03.03.2010, 23:43
4p3
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
Провел на форуме:
750247

Репутация: 92
По умолчанию

Цитата:
Сообщение от NTFF  
4p3


Зарание тебе спасибо))))))
Уточни, пожалуйста, какой список должен быть: двунаправленный, однонаправленный? Кольцевой?
 
Ответить с цитированием

  #2  
Старый 03.03.2010, 23:59
NTFF
Новичок
Регистрация: 09.12.2009
Сообщений: 23
Провел на форуме:
42989

Репутация: 0
По умолчанию

я не знаю что ты имеешь ввиду, но должна она быть типа вот такой программы

program Records;
uses
crt, strings;
const
max = 100; {максимальное допустимое количество записей в массиве}
type
{Тип данных для описания книги}
TBook = record
name : string[40]; {название}
author : string[20]; {автор}
style : string[20]; {жанр}
tom : byte; {количество томов}
year : word; {год выпуска}
end;

{Тип данных "Каталог книг" - массив из 100 книг}
TBooks = array [1..max] of TBook;

{Процедура рисование окна без рамки.
Вх.данные:
(x1,y1) - координаты верхнего левого угла окна,
(x2,y2) - координаты нижнего правого угла окна,
tc - цвет текста,
c - цвет фона окна}
procedure SngWindow(x1,y1,x2,y2,tc,c : byte);
begin
window(x1,y1,x2,y2);
textbackground(c);
textcolor(tc);
clrscr;
end;

{Процедура рисование окна с рамкой шириной в 1 символ.
Вх.данные:
(x1,y1) - координаты верхнего левого угла окна,
(x2,y2) - координаты нижнего правого угла окна,
tc - цвет текста,
c1 - цвет рамки,
c2 - цвет фона окна}
procedure DblWindow(x1,y1,x2,y2,tcolor, c1, c2 : byte);
begin
window(x1,y1,x2,y2);
textbackground(c1);
clrscr;
window(x1+1,y1+1,x2-1,y2-1);
textbackground(c2);
textcolor(tcolor);
clrscr;
end;

{Функция для отображения главного меню и выбора одного из его пунктов.
Функция возвращает значение от 1 до 5.}
function Menu : byte;
var
punkt : byte; {номер выбранного пункта меню}
er : integer; {код ошибки при преобразовании строки в число}
s : string; {строка для проверки вводимого номера пункта меню}
begin
{Закрасить весь экран черным цветом}
SngWindow(1,1,80,25,WHITE,BLACK);
{Нарисовать рабочее окно}
SngWindow(1,6,80,25,WHITE,BLUE);
{цикл выполняется до тех пор, пока пользователь не введет число от 1 до 5}
repeat
{Нарисовать окно для главного меню}
DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
writeln;
write(' 1.Добавить 2.Удалить 3.Печать 4.Поиск 5.Выход');
readln(s); {ввод номера пункта меню}
val(s,punkt,er);
until (er=0) and (punkt>=1) and (punkt<=5);
Menu := punkt; {возврат значения функции}
end;
{Функция для отображения подменю для поиска и выбора одного из его пунктов.
Функция возвращает значение от 1 до 4.}
function SubMenu : byte;
var
punkt : byte; {номер выбранного пункта меню}
er : integer; {код ошибки при преобразовании строки в число}
s : string; {строка для проверки вводимого номера пункта меню}
begin
{Закрасить весь экран черным цветом}
SngWindow(1,1,80,25,WHITE,BLACK);
{Нарисовать рабочее окно}
SngWindow(1,6,80,25,WHITE,BLUE);
{цикл выполняется до тех пор, пока пользователь не введет число от 1 до 4}
repeat
{Нарисовать окно для главного меню}
DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
writeln;
write(' 1.Поиск по названию 2.Поиск по автору 3.Поиск по году 4.Выход');
readln(s); {ввод номера пункта меню}
val(s,punkt,er);
until (er=0) and (punkt>=1) and (punkt<=4);
SubMenu := punkt; {возврат значения функции}
end;

{Процедура добавления книги в каталог книги.
Книга добавляется в конец каталога.
Вх.данные:
mas - каталог книг;
n - количество книг в каталоге;
size - максимальное возможное количество книг в каталоге;
Вых.данные:
если каталог полностью еще не заполнен, то в него будет добавлена
книга и n увеличится на 1, в противном случае - книга не добавляется.
mas - каталог книг;}
procedure AddRecord(var mas : TBooks; var n : byte; size : byte);
var
s : String; {строка для ввода числовых значений}
er : integer; {код ошибки при преобразовании строки в число}
begin
{проверка: есть ли еще место для новой книги в каталоге}
if (n+1 <= size) then
begin
inc(n); {увеличение количества книг в каталоге}
{ввод названия, автора и жанра книги}
write('Название книги =>'); readln(mas[n].name);
write('Автор =>'); readln(mas[n].author);
write('Жанр =>'); readln(mas[n].style);
{ввод количества томов (>0)}
repeat
write('Количество томов =>');
readln(s);
val(s,mas[n].tom,er);
until (er=0) and (mas[n].tom>0);
{ввод года издания (в диапазоне [1900;2008])}
repeat
write('Год издания =>');
readln(s);
val(s,mas[n].year,er);
until (mas[n].year >= 1900) and (mas[n].year<=2008);
writeln('Книга добавлена в каталог!');
end
else writeln('Недостаточно места в каталоге!');
end;

{Процедура печати информации о книге под номером i в каталоге}
procedure PrintRecord(var mas : TBooks; i : integer);
begin
write(i:3);
with mas[i] do
begin
write(name:23); write(author:20);
write(style:10); write(tom:10);
write(year:12);
writeln;
end;
end;

{Процедура печати содержимого всего каталога.
Вх.данные:
mas - каталог книг,
n - количество книг в каталоге}
procedure Print(var mas : TBooks; n : integer);
var
i : integer; {номер книги в каталоге}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
for i:=1 to n do
PrintRecord(mas,i);
end;

{Процедура удаления книг из каталога под названием bname.
Вх.данные:
mas - каталог книг,
n - количество книг в каталоге,
bname - название книг, которые необходимо удалить из каталога
Вых.данные:
если в каталоге имеются книги под название bname информация о
них будет распечатана и они будут удалены из каталога и
количество книг в каталоге n уменьшиться на количество удаленных книг;
если в каталоне нет книг под заданным названием на экран
не будет выводиться информация о книгах.}
procedure DelRecordByName(var mas : TBooks; var n : byte; bname : string);
var
i,j : integer; {номера книг в каталоге}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
{цикл для просмотра всех книг каталога}
for i:=1 to n do
begin
with mas[i] do
{книга под номером i имеет название bname,
следовательно ее необходимо удалить из каталога}
if (name = bname) then
begin
PrintRecord(mas,i); {печать информации об удаляемой книге}
{цикл для смещения книг на одну позицию влево для
удаления книги из каталога}
for j:=i+1 to n do
mas[j-1] := mas[j];
{количество книг в каталоге уменьшилось на 1}
dec(n);
end;
end;
end;

{Процедура поиска книг по названию.
Вх.данные:
mas - каталог книг;
n - количество книг в каталоге;
bname - название книги, по которому необходимо осуществлять поиск книг;
Вых.данные: на экране монитора в табличном виде распечатается информация о
книгах с названием bname.}
procedure FindByName(var mas : TBooks; n : integer; bname : string);
var
i : integer; {номер книги}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
{просмотр всех книг в каталоге}
for i:=1 to n do
with mas[i] do
{название книги совпадает с заданным названием bname}
if name=bname then PrintRecord(mas,i);
end;

{Процедура поиска книг по автору и жанру.
Вх.данные:
mas - каталог книг;
n - количество книг в каталоге;
ba - автор книги;
bst - жанр книги;
Вых.данные: на экране монитора в табличном виде распечатается информация о
книгах, которые написал автор ba в жанре bst.}
procedure FindByAuthor(var mas : TBooks; n : integer; ba, bst : string);
var
i : integer; {номер книги}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
{просмотр всех книг в каталоге}
for i:=1 to n do
with mas[i] do
{автор книги и жанр совпадают с заданными автором ba и жанром bst}
if (author=ba) and (style=bst) then PrintRecord(mas,i);
end;

{Процедура поиска книг по году издания.
Вх.данные:
mas - каталог книг;
n - количество книг в каталоге;
[a,b] - период издания книг;
Вых.данные: на экране монитора в табличном виде распечатается информация о
книгах, которые были изданы в период годов от а до b.}
procedure FindByYear(var mas : TBooks; n : integer; a, b : word);
var
i : integer; {номер книги}
begin
writeln('#':3,'Название':23,'Автор':2 0,'Жанр':10,'Тома':10,'Год издания':12);
{просмотр всех книг в каталоге}
for i:=1 to n do
with mas[i] do
{год издания книги находиться в диапазоне от а до b}
if (a<=year) and (year<=b) then PrintRecord(mas,i);
end;

var
b : TBooks; {каталог книг}
n : byte; {количество книг в каталоге}
punkt : byte; {номер пункта меню}
subpunkt : byte; {номер подпункта в пункте меню Поиск}
bookname, {название книги}
a, {автор книги}
st : string; {жанр книги}
y1,y2 : word; {диапазон годов издания книг}
s : string; {строка для ввода числовых значений}
er : integer; {код ошибки при переводе строки в число}

begin
n := 0; {в каталоге нет книг}
SngWindow(1,1,80,25,WHITE,BLACK);
repeat
punkt:= Menu; {выбор пункта меню}
case (punkt) of
1:begin {пункт Добавление книги}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' ДОБАВЛЕНИЕ КНИГИ В КАТАЛОГ');
AddRecord(b,n,max); {добавление книги в каталог b}
readkey;
end;
2:begin {пункт Удаление книги}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' УДАЛЕНИЕ КНИГ ПО НАЗВАНИЮ');
{Задание значения ключа - название книги}
write('Название книги =>');
readln(bookname);
{удаление из каталога книг по названию книги}
DelRecordByName(b,n,bookname);
readkey;
end;
3:begin {печать каталога книг}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' КАТАЛОГ КНИГ');
Print(b,n); {печать в табличном виде информации о книгах в каталоге}
readkey;
end;
4:begin {пункт Поиск книг}
repeat
subpunkt := SubMenu; {выбор пункта меню по поиску книг}
case (subpunkt) of
1:begin {пункт Поиск по названию книги}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' КНИГИ ПО НАЗВАНИЮ ');
{задание ключа поиска по названию книги}
write('Название книги =>');
readln(bookname);
{поиск книг в каталоге b по названию bookname}
FindByName(b,n,bookname);
readkey;
end;
2:begin {пункт Поиск по автору и жанру}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' КНИГИ ПО АВТОРУ И ЖАНРУ');
{задание ключа поиска по автору}
write('Автор книги =>');
readln(a);
{задание ключа поиска по жанру}
write('Жанр книги =>');
readln(st);
{поиск книг в каталоге b по автору и жанру}
FindByAuthor(b,n,a,st);
readkey;
end;
3:begin {поиск по году издания}
SngWindow(1,6,80,25,WHITE,BLUE);
writeln(' КНИГИ ПО ГОДУ ИЗДАНИЯ ');
{цикл задания ключа поиска по году издания}
repeat
{задание ключа поиска - минимальный год}
repeat
write('Минимальный год =>');
readln(s);
val(s,y1,er);
until (er=0) and (y1>=1900); {год издания должен быть >= 1900}
{задание ключа поиска - максимальный год}
repeat
write('Максимальный год =>');
readln(s);
val(s,y2,er);
until (er=0) and (y2<=2008); {год издания должен быть <= 2008}
until (y1<y2);
{поиск книги по году издания [y1,y2] в каталоге b}
FindByYear(b,n,y1,y2);
readkey;
end;
end;
until (subpunkt = 4); {выход из подменю поиска при выборе пункта 4}
end;
end;
until (punkt = 5); {выход из программы при выборе пункта меню 5}
SngWindow(1,1,80,25,WHITE,BLACK);
end.
 
Ответить с цитированием

  #3  
Старый 04.03.2010, 00:19
4p3
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
Провел на форуме:
750247

Репутация: 92
По умолчанию

А.. это еще и дельфи. Я не пишу на дельфях. Ничем помочь не могу.
 
Ответить с цитированием

  #4  
Старый 04.03.2010, 00:53
NTFF
Новичок
Регистрация: 09.12.2009
Сообщений: 23
Провел на форуме:
42989

Репутация: 0
По умолчанию

та нет это не делфи я запускал это на паскале.
преподаватель говорил что это паскаль
я тебе просто показую пример
 
Ответить с цитированием

  #5  
Старый 04.03.2010, 07:26
fenixelite
Участник форума
Регистрация: 07.02.2010
Сообщений: 189
Провел на форуме:
870084

Репутация: 79
По умолчанию

Ты точнее скажи через что реализовать нужно? Ты писал что через списки, а в примере сделано через записи Оо..
 
Ответить с цитированием

  #6  
Старый 04.03.2010, 20:33
NTFF
Новичок
Регистрация: 09.12.2009
Сообщений: 23
Провел на форуме:
42989

Репутация: 0
По умолчанию

Цитата:
Сообщение от fenixelite  
Ты точнее скажи через что реализовать нужно? Ты писал что через списки, а в примере сделано через записи Оо..
я эту тему не знаю так как препод заболел а сдавать надо, надо чтоб все было так как в примере только согласно согласно заданию.

рас уж это записи знач через записи
 
Ответить с цитированием

  #7  
Старый 04.03.2010, 08:44
BastardFromHell
Познающий
Регистрация: 05.02.2010
Сообщений: 59
Провел на форуме:
360122

Репутация: 41
По умолчанию

не знаю как в этом богомерзком языке, но в сях = это присвоить
Тут наверное также
 
Ответить с цитированием

  #8  
Старый 04.03.2010, 08:53
fenixelite
Участник форума
Регистрация: 07.02.2010
Сообщений: 189
Провел на форуме:
870084

Репутация: 79
По умолчанию

Ужасная реализация )) Присвоить в дельфи это := ,
 
Ответить с цитированием

  #9  
Старый 04.03.2010, 17:32
KrabKN
Новичок
Регистрация: 22.01.2010
Сообщений: 25
Провел на форуме:
63520

Репутация: 0
По умолчанию

помогите зделать программу
Создание собственной библиотеки
создать библиотеку функций
Список группы (ФИО, возраст, средний балл по предметам)
на СИ
 
Ответить с цитированием

  #10  
Старый 11.03.2010, 11:18
SHARA
Участник форума
Регистрация: 26.05.2007
Сообщений: 191
Провел на форуме:
389326

Репутация: 9
По умолчанию

Цитата:
Сообщение от KrabKN  
помогите зделать программу
Создание собственной библиотеки
создать библиотеку функций
Список группы (ФИО, возраст, средний балл по предметам)
на СИ
если еще нужно, случайно нашел вот статья которая тебе поможет
Цитата:
http://www.hostmake.ru/articles/c/257/
Там описан принцип работы со структурами
Посмотри пример про массивы структур, там практически описано решение твоего задания
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.