Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Пояснения к программе. В основе программы лежит обычный алгоритм поиска максимума, использование перечисляемых типов Club и Seson позволяет сделать программу наиболее удобочитаемой





В основе программы лежит обычный алгоритм поиска максимума, использование перечисляемых типов Club и Seson позволяет сделать программу наиболее удобочитаемой. Также легко реализуется пропуск января при подсчете очков. Единственная проблема состоит в том, что значения перечисляемого типа нельзя использовать в процедурах ввода и вывода. Поэтому для вывода клуба-победителя используется стандартный прием — вывод с применением оператора-варианта.

program Champion;

Type

Club = (Inter, Roma, Napoli, Juventus, Fiorentina, Sampdoria, Milan);

Seson = (sep, oct, nov, dec, feb, mar, apr, may);

Var

V, Pr: Club; {клубы победитель и претендент}

Mes: Seson; {месяц футбольного чемпионата}

K, S, Max: Integer; {переменные для работы с очками}

Begin

Max:= -1;

Writeln('Введите очки клубов');

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

for Pr:= Inter to Milan do

Begin

Writeln('клуб №', ord(Pr) + 1:2);

S:= 0;

{внутренний цикл по месяцам}

for Mes:= sep to may do

Begin

Read(K);

S:= S + K

end;

{поиск клуба с максимальным числом очков}

if S > Max then

Begin

V:= Pr;

Max:= S

End

end;

{вывод клуба – чемпиона}

Write('Победитель чемпионата клуб ');

case V of

Inter: Write('Интер');

Roma: Write('Рома');

Napoli: Write('Наполи');

Juventus: Write('Ювентус');

Fiorentina: Write('Фиорентина');

Sampdoria: Write('Сампдория');

Milan: Write('Милан')

end;

Writeln(' с результатом ', Max: 2, ' очков')

End.

6.11. В следующем фрагменте программы определите новый курс К2 корабля, если корабль сначала шел по курсу К1, а затем его курс был изменен согласно приказу ПР.

Type

курс = (СЕВЕР, ВОСТОК, ЮГ, ЗАПАД);

приказ = (ВПЕРЕД, ВЛЕВО, ВПРАВО, НАЗАД);

Var

Kl, К2: курс;

ПР: приказ;

6.12. В следующем фрагменте программы переменной t присвойте значение true, если тройка у, m, d образует правильную дату, и значение false в противном случае (например, 31 июня и т. п.).

Type

месяц = (янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек);

Var

у: 1900..2000;

m: месяц;

d: 1..31;

t: boolean;

6.13. В следующем фрагменте программы по дате d, m, у определите дату следую­щего дня — dl, ml, yl.

Type

месяц = (янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек);

Var

d, dl: 1..31;

m, ml: месяц;

у: 1901..2000;

yl: 1901..2001;

6.14. Используя описания из предыдущего задания:

a) определите k — порядковый номер того дня високосного года, который имеет дату d, m;

б) определите d, m — дату k-гo по счету дня високосного года.

6.15. Пусть дан фрагмент программы:

Type

число = 1..31;

месяц = (янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек);

день_недели = (вс, пн, вт, ср, чт, пт, сб);

Var

d: число;

m: месяц;

k: 0..12;

wdl, wd: день_недели;

Считая, что год високосный и его 1 января приходится на день недели wdl, определите:

a) wd — день недели, на который приходится день с датой d, m;

б) k — количество понедельников в году, приходящихся на 13-е число.

6.16. Пусть значение функции f(n) равно количеству букв в записи числа n рус­скими словами f(l)=4 (один), f(3)=3 (три), f(42)=8 (сорок два) и т. п. Напеча­тайте все натуральные числа n, меньшие 100, для которых f(n)= n.

6.17. В старояпонском календаре был принят 60-летний цикл, состоявший из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: зеленый, красный, желтый, белый, черный. Внутри каждого подцикла года носили на­звания животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи (1984 год — год зеленой крысы — был началом очередного цикла). Напишите программу для ввода номера некото­рого года нашей эры и вывода его названия по старояпонскому календарю.

6.18. Напечатайте календарь заданного месяца 2005 года, зная, что 1 января 2005 го­да — суббота.

6.19. Пусть число записано римскими цифрами: М — 1000, D — 500, С — 100, L — 50, X — 10, V — 5, I — 1. Выведите его запись арабскими цифрами.

6.20. Пусть на шахматной доске заданы два поля: р1 и р2. Определите, какая из шахматных фигур при установке на поле р1 бьет фигуру, стоящую на поле р2. Координаты на шахматной доске определяются по горизонтали от а до h и по вертикали от 1 до 8. Белые фигуры двигаются от 8-й горизонтали к 1-й, а черные — от 1-й к 8-й.

6.21. По дате (месяц и день) рождения определите знак Зодиака (соответствие знаков Зодиака временным интервалам см. в задаче 4.41).

 

Записи

 

7.1. Используя следующий фрагмент программы, опишите логическую функцию High (К1, К2: card; КМ: mast), проверяющую, «бьет» ли карта К1 карту К2, с учетом того, что масть КМ является козырной.

Type

mast = (piki, tref, bubi, chervi);

value = (six, seven, eight, nine, ten, jack, queen, king, ace);

card = record

m: mast;

d: value

end;

7.2 Используя следующий фрагмент программы, опишите перечисленные ниже функции:

Type

field = record

file: (а, b, с, d, e, f, g, h);

horizontal: 1.. 8

end;

а) функция ХодСлона(f1, f2) проверяет, находится ли фигура с поля f2 под боем у слона, который стоит на поле fl;

б) функция ХодЛадьи(f1, f2, f3) проверяет, может ли ладья за один ход пе­рейти с поля fl шахматной доски на поле f2. Если нет, надо указать про­межуточное поле f3, через которое ладья может попасть на поле f2 за два хода;

в) функция ХодКоня(f1, f2) проверяет, можно ли конем с поля f1 объявить шах, если король находится на поле f2;

г) функция ХодФерзя(f1, f2) проверяет, может ли ферзь за один ход перейти с поля fl шахматной доски на поле f2.

7.3. Используя следующий фрагмент программы, найдите самую длинную реку из списка и напечатайте ее название.

Type

river = record

name: string[25];

length: integer

end;

list = array [1..30] of river;

7.4. Используя описание костей домино с помощью типа Domino, проверьте, правильно ли выставлены кости доми­но в ряду A (равна ли правая цифра очередной кости левой цифре следую­щей кости).

Program Domino28;

Type

Domino = record

Left, Right: 0.. 6

end;

rank = array [1..28] of Domino;

Var

A: rank;

i, N: Integer;

f: Boolean;

Begin

Repeat

Writeln('Введите число костей');

readln(N)

Until N in [1..28];

for i:= 1 to N do

Begin

Repeat

Writeln('левое значение',i:3,'-ой кости');

Readln(A[i].Left)

Until A[i].Left in [0..6];

Repeat

Writeln('правое значение',i:3,'-ой кости');

Readln(A[i].Right)

Until A[i].Right in [0..6]

end;

f:= True;

for i:= 1 to N-1 do

if A[i].Right <> A[i+1].Left then

Begin

f:= False;

break

end;

Writeln('Введенный ряд');

for i:= 1 to N do

write(A[i].Left,':',A[i].Right,' ');

Writeln;

if f then Writeln('Правильный ряд')

else Writeln('Неправильный ряд')

End.

7.5. Используя следующий фрагмент программы, опишите перечисленные ниже функции:

Type

name = (Аня, Валя, Женя, Петя, Саша, Таня, Шура, Юра);

information = record

pol: (man, woman);

height: 140..200

end;

group = array [name] of information;

а) функция СредРост(ГР) определяет средний рост женщин из группы ГР;

б) функция Высокий(ГР) определяет имя самого высокого мужчины из груп­пы ГР;

в) логическая функция ОдинРост(ГР) проверяет, есть ли в группе ГР хотя бы два человека одинакового роста.

7.6. Используя следующий фрагмент программы, опишите процедуру ИронияСудьбы(С), которая печатает фамилии двух (любых) жителей из списка С, живу­щих в разных городах по одному адресу.

Type

citizen = record

last_name, city: string[20];

address: record

street: string[20];

house, apartment: 1..999

End

end;

Var

list: array [1..15] of citizen;

7.7. Используя следующий фрагмент программы, опишите перечисленные ниже процедуры:

Type

data = record

number: 1..31;

month: 1..12;

year: 1901..1997

end;

form = record

last_name: string[20];

pol: (man, woman);

birthday: data

end;

group = array [1..25] of form;

a) процедура Старший(Гр, Фам) присваивает строке Фам фамилию самого стар­шего мужчины из группы Гр (считать, что такой есть и он единственный);

б) процедура Печать(Гр, Бук) печатает все фамилии людей из группы Гр, на­чинающиеся с литеры Бук, и даты рождения этих людей.

7.8. В массиве содержится информация о зимней сессии. Сведения о каждом студенте содержат следую­щие данные: фамилию (до 12 символов), номер группы (от 1 до 7), оценки по трем предметам (математика, физика и программирование). Напишите программу, которая вводит эту информацию и пе­чатает следующие данные:

a) фамилии студентов, имеющих задолженность хотя бы по одному предмету;

б) процент студентов, сдавших все экзамены на 5 и 4;

в) название предмета, который был сдан лучше всего;

г) номера групп в порядке убывания средней успеваемости их студентов.

7.9. Сведения о студентах вуза записаны в массиве и содержит следующую ин­формацию: фамилия, имя, отчество, пол (М или Ж), возраст (от 16 до 35), курс (от 1-го до 5-го). Напишите программу, которая вводит эту информа­цию и печатает следующие данные:

a) номер курса, на котором наибольший процент мужчин;

б) самые распространенные мужские и женские имена;

в) фамилии (в алфавитном порядке) и инициалы всех студенток, возраст и отчества которых являются одновременно самыми распространенными.

7.10. Используя следующий фрагмент программы, опишите перечисленные ниже подпрограммы:

Type

fraction = record

numerator: integer;

denominator: 1..maxint

end;

massif = array [1..20] of fraction;

а) логическая функция Равно(a, b) сравнивает два рациональных числа а и b;

б) процедура Слож(a, b) складывает рациональные числа а и b;

в) процедура Сокр(z) приводит рациональное число z к несократимому виду;

г) процедура Мах(x, m) присваивает параметру m наибольшее из рациональных чисел массива х.

7.11. Используя следующий фрагмент программы, опишите процедуры для вычисления значения квадратного трехчлена y = ах2 + bх + с в точке х, при условии, что a, b, c, x относятся к типу complex.

Type

complex = record

re, im: real

end;

7.12. Используя следующий фрагмент программы, опишите процедуры для преобразования координат точки на плоскости из декартовых координат в полярные и наоборот из полярных в декартовы.

Type

decart = record

x, y: real

end;

polyar = record

r, fi: real

end;

7.13. Используя следующий фрагмент программы и считая, что все даты даются по григорианскому календарю (в «новом стиле»), опишите перечисленные ниже функции:

Type

data = record

number: 1..31;

month: 1..12;

year: 1901..1997

end;

week = (пн, вт, ср, чт, пт, сб, вс);

a) функция ПослЧисло(d) вычисляет количество дней в том месяце, которому принадлежит дата d;

б) логическая функция ВернаяДата(d) проверяет правильность даты d;

в) функция ЧислоДней(d) подсчитывает, сколько дней прошло с 1 января 1-го года нашей эры до даты d;

г) функция ДеньНедели(d) предназначена для определения дня недели, на который приходится дата d (учтите, что 1 января 1-го года нашей эры было поне­дельником);

д) функция Пятница13 (d) определяет количество дней в году y, которые были пятницами 13-го числа.

7.14. Пусть дан массив, содержащий даты. Каждая дата — это число, месяц, год (см. описание типа data в предыдущем задании). Найти:

a) год с наименьшим номером;

б) все весенние даты;

в) самую позднюю дату.

7.15. Используя следующий фрагмент программы, найдите наибольшее расстоя­ние (D) между точками, рассматривая элементы массива М как координаты точек на плоскости:

Type

Point = Record

х, у: Real

end;

Var

М: Array [1..40] of Point;

D: Real;

 

Date: 2015-07-23; view: 1162; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию