Автор работы: Пользователь скрыл имя, 27 Декабря 2012 в 03:10, задача
ЗАДАЧА
Информация о туристе состоит из фамилии, возраста и пола. Дана информация о группе, состоящей из 30 туристов. Найти:
Количество мужчин
Средний возраст
Фамилию младшей из женщин.
Дальневосточный федеральный университет.
2012г.
Отчет о выполнении индивидуального задания №5.
Выполнил студент группы Б8103б
Шалин Игорь
ЗАДАЧА
Информация о туристе состоит из фамилии, возраста и пола. Дана информация о группе, состоящей из 30 туристов. Найти:
НЕ ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ
Требуется написать программу, которая создаст базу данных, состоящую из трех элементов, на тридцать человек. Программа должна будет вычислить количество мужчин, средний возраст всех людей, вычислить возраст младшей из женщин и вывести ее фамилию.
ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ
A = {si | si ∈ c, i =1..n}
c = {‘А’..’я’, ‘0’..’9’}
si = <fam sex age>
fam ∈ {‘А’..’я’}
age ∈ R
n = 30
K = {x | x ∈ N}
S = {x | x ∈ N}
F = {y | y ∈ {‘А’..’я’}}
Разработка алгоритма
Спецификация данных
1 запись: данные о первом туристе.
…
N запись: данные о N туристе.
Каждая запись имеет формат «Фамилия, пол, возраст»
Спецификация функций
ПРОЭКТ ПРОГРАММ
Входные данные
Вызов процедур, обрабатывающих данные, вывод результата работы программы
Стандартное устройство вывода
Ссылка на zapusk
Zapusk
Запускает ввод данных и вывод результата работы программы
Стандартное устройство вывода
Ссылка на Resh
resha
Вычисление значений K, S, F и вывод их на экран
K, S, F
Ссылка на vvod_age
Vvod_age
Ввод возраста, провека корректности.
Error, Base[i].age
Ссылка на vvod_sex
Vvod_sex
Ввод пола, проверка корректности
Error, Base[i].sex
Ссылка на vvod_fam
Vvod_fam
Ввод фамилии, проверка коректности.
Error, Base[i].fam
Проектирование программы на языке PDL
program Bases;
const n=30;
type tourist=record
fam: string[20];
sex: char;
age: integer;
end;
VAR
base:array [1..n] of tourist;
i, kol, srvoz: integer;
mlad:real;
familiya: string[20];
podt: char;
procedure vvod_fam;
forward;
procedure vvod_sex;
forward;
procedure vvod_age;
forward;
procedure resh;
forward;
procedure proverka;
forward;
procedure zapusk;
begin
while i<=n do begin
vvod_fam;
vvod_sex;
vvod_age;
end;
resh;
end;
procedure vvod_fam;
var
l,k:integer;
begin
writeln('Введите фамилию');
readln(base[i].fam);
f:=base[i].fam;
k:=0;
for l:=1 to length(f) do begin
< проверка корректности данных >
if < данные не корректны > then begin
< Вывод ошибки >
< Повтор ввода >
end
else
if l = length(base[i].fam) then vvod_sex;
end;
end;
procedure vvod_sex;
begin
writeln('Введите пол (м, ж)');
readln(base[i].sex);
if < символы не "м" или "ж" > then begin
< Вывод ошибки >
< Повтор ввода >
end
else vvod_age;
end;
procedure vvod_age;
begin
writeln('Введите возраст');
readln(base[i].age);
if < возраст отрицательный или равен 0 > then begin
< Вывод ошибки >
< Повтор ввода >
end;
if base[i].age>256 then begin
< Вывод ошибки >
< Повтор ввода >
end;
if < возраст больше 100 > then begin
writeln('Вы уверены, что вы ввели правильный возраст?');
proverka;
end
else begin
inc(i);
zapusk;
end;
end;
procedure proverka;
begin
writeln('да(Y) нет(N)');
readln(podt);
if < символ не корректен > then begin
< Вывод ошибки >
< Повтор ввода >
end
else
if < получено подтверждение > then
if i=n then resh
else < начать ввод следующей фамилии >
else begin
< повторить ввод возраста >
end;
end;
procedure resh;
var
I,x:integer;
begin
kol:=0;
srvoz:=0;
repeat
if base[i].sex='ж' then mlad:=base[i].age;
until base[i].sex='ж';
for i:=1 to n do begin
if base[i].sex='м' then <подсчитываем количество мужчин>
else
< считаем количество женщин >
< ищем младшую женщину >
srvoz:=srvoz+base[i].age;
end;
< ищем средний возраст >
writeln('мужчин : ',kol);
writeln('Средний возраст равен: ', srvoz,' лет');
if x=0 then writeln('Женщин в группе нет')
else writeln('Фамилия младшей женщины: ', familiya);
halt;
end;
end;
BEGIN
i:=1;
zapusk;
END.
Тестирование
Классы эквивалентности
Тесты:
Правильно:
t1= Тихонов
м
32
t2=Иванова
ж
14
Не правильно:
t3=Tixonov
м
32
t4= Тихонов1
м
32
t5= Тихонов
муж
32
T6=Тихонов
м
- 32
T7= Тихонов
м
257
T8= Иванова
дев
14
Информация о работе Написание программы на языке программирования Pascal