Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.12.2014
Сообщений: 1

Оцените код(забавные законы относительно транспортных средств)

04.05.2013, 16:40. Показов 1150. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решал лёгкую задачу, решил, но код получился, мне кажется, не очень хорошим. Потом посмотрел решение другого человека, так у него решение оказалось в два раза короче.
Пожалуйста посмотрите решения и укажите на ошибки.
Условие задачи:
Кликните здесь для просмотра всего текста
В небольшом островном государстве действовали забавные законы относительно
транспортных средств – автобусов, грузовиков, легковушек.
Во-первых, общее количество автомобилей на острове не должно было превышать
256. Автомобилям назначались номера с 0 до 255, при этом соблюдались следующие
правила.
Номера, делившиеся без остатка на 7, назначались автобусам. Те, что делились без
остатка на 5, назначались грузовикам, а все прочие – легковушкам. Так, например, номера
35 и 70 доставались автобусам, а не грузовикам, хоть и делились на 5.
Похожие правила применялись и к окраске автомобилей, а именно.
Если номер авто делился на 4, его красили красным, если на 3 – желтым, если на 2 –
белым, а остальные автомобили красили черным.
· Сформируйте три множества по классам автомобилей – автобусы, грузовики и
легковушки. Вычислите количество машин каждого класса (Ответ: 37, 44, 175).
· Сформируйте четыре множества по цвету автомобилей – красные, желтые, белые и
черные. Определите количество машин каждого цвета (Ответ: 64, 64, 43, 85).
· Столица того государства – деревня Кокосовка – страдала от пробок. Для борьбы с
ними ввели ограничение на въезд транспорта. Так, в один из дней недели в столицу
пускали только красные легковушки, белые грузовики и все автобусы. Найдите
номера всех этих машин. Сколько всего автомобилей могло въехать в столицу в тот
день?

Моё решение:
Моё решение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
type 
        TSet = set of byte; 
var 
        i:byte; 
        Bus, Truck, Car, Red, Yellow, White, Black, Sets:TSet; 
function ReadType(aI:byte):TSet; 
var 
        n:byte; 
begin 
        ReadType:=[]; 
        for n:=0 to 255 do 
                if n mod aI=0 then ReadType:=ReadType+[n]; 
end; 
procedure SetOfType(var aBus, aTruck, aCar:TSet); 
var 
        i, j:byte; 
begin 
        i:=7; 
        repeat 
                case i of 
                        7:aBus:=ReadType(i); 
                        5:aTruck:=ReadType(i)-aBus; 
                        else for j:=0 to 255 do 
                                if not (j in aBus+aTruck) then aCar:=aCar+[j]; 
                end; 
                i:=i-2; 
        until i<3; 
end; 
function ReadColor(aI:byte):TSet; 
var 
        n:byte; 
begin 
        ReadColor:=[]; 
        for n:=0 to 255 do 
                if n mod aI=0 then ReadColor:=ReadColor+[n]; 
end; 
procedure SetOfColor(var aRed, aYellow, aWhite, aBlack:TSet); 
var 
        i, j:byte; 
begin 
        i:=4; 
        repeat 
                case i of 
                        4:aRed:=ReadColor(i); 
                        3:aYellow:=ReadColor(i)-aRed; 
                        2:aWhite:=ReadColor(i)-(aRed+aYellow); 
                        else for j:=0 to 255 do 
                                if not (j in aRed+aYellow+aWhite) then aBlack:=aBlack+[j]; 
                end; 
                dec(i); 
        until i=0; 
end; 
procedure WriteSets(aSet:TSet); 
var 
        j, k:byte; 
begin 
        k:=0; 
        for j:=0 to 255 do begin 
                if j in aSet then inc(k); 
        end; 
        write(k, ' '); 
end; 
begin 
        //Множества типов автомобилей 
        Bus:=[]; Truck:=[]; Car:=[]; 
        //Множество цветов 
        Red:=[]; Yellow:=[]; White:=[]; Black:=[]; 
        SetOfType(Bus, Truck, Car); 
        SetOfColor(Red, Yellow, White, Black); 
        for i:=1 to 7 do begin 
                case i of 
                        1:Sets:=Bus; 
                        2:Sets:=Truck; 
                        3:Sets:=Car; 
                        4:Sets:=Red; 
                        5:Sets:=Yellow; 
                        6:Sets:=White; 
                        7:Sets:=Black; 
                end; 
                WriteSets(Sets); 
                if (i=3) or (i=7) then writeln; 
        end; 
        Sets:=(Red*Car)+(White*Truck)+Bus; 
        WriteSets(Sets); 
        readln; 
end.


Решение другого человека:
Решение другого человека
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
type TAuto = set of byte; 
procedure WriteSet(const aSet : TAuto); 
var k : integer; 
begin 
for k:=0 to 255 do if k in aSet then Write(k:4); 
Writeln; Writeln('---'); 
end; 
function Count(const aSet : TAuto): integer; 
var k, r : integer; 
begin 
r:=0; 
for k:=0 to 255 do if k in aSet then Inc(r); 
Result:=r; 
end; 
var Bus, Truck, Car : TAuto; 
Red, Yellow, White, Black : TAuto; 
i: integer; 
R: TAuto; 
begin 
Bus:=[]; Truck:=[]; Car:=[]; 
Red:=[]; Yellow:=[]; White:=[]; Black:=[]; 
for i := 0 to 255 do begin 
if (i mod 7 = 0) then Bus:= Bus+[i] 
else 
if (i mod 5 = 0) then Truck:= Truck+[i] 
else 
Car:= Car+[i]; 
end; 
for i := 0 to 255 do begin 
if (i mod 4 = 0) then Red:= Red+[i] 
else 
if (i mod 3 = 0) then Yellow:= Yellow+[i] 
else 
if (i mod 2 = 0) then White:= White+[i] 
else 
Black:= Black+[i]; 
end; 
Writeln(Count(Bus)); WriteSet(Bus); 
Writeln(Count(Truck)); WriteSet(Truck); 
Writeln(Count(Car)); WriteSet(Car); 
Readln; 
Writeln(Count(Red)); WriteSet(Red); 
Writeln(Count(Yellow));WriteSet(Yellow); 
Writeln(Count(White)); WriteSet(White); 
Writeln(Count(Black)); WriteSet(Black); 
Readln; 
R:= Red*Car + White*Truck + Bus; 
Writeln(Count(R)); WriteSet(R); 
Readln; 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2013, 16:40
Ответы с готовыми решениями:

Рассчитать стоимость подачи транспортных средств под погрузку
Помогите пожалуйста написать программу на паскале. Я вообще не знаю как ее составить( Задан массив (размерность 14) записей следующей...

БД о кол-ве транспортных средств
Прошу помочь с чего мне начать у меня есть БД о кол-ве транспортных средств, далее мне нужно сделать так что бы при запросе у меня выходил...

Создание интерфейсов транспортных средств
Создайте три интерфейса, каждый с двумя методами. Наследуйте новый интерфейс от этих трех, добавьте новый метод. Создайте класс,...

1
 Аватар для Paster Fob
296 / 274 / 194
Регистрация: 03.05.2012
Сообщений: 570
04.05.2013, 19:17
TiPo, вопросы связанные с книгой "Песни о Паскале" задавайте и обсуждайте с автором.
http://freepascal.ru/forum/viewforum.php?f=45
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2013, 19:17
Помогаю со студенческими работами здесь

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

Программа для учета продаж транспортных средств
нужно написать программу для учета продаж транспортных средств на visual basic. Помогите пожалуйста.

Структура "Автомобили", выбор транспортных средств по владельцу
Разработать программу с использованием структуры для работы с данными. Реализовать функции ввода, вывода, удаления, поиска элементов. ...

Забавные поиски
Решил тут поделится веселыми моментами некоторых поисков. Предлагаю присоединятся по форме - Задача поиска - скрин результата. Итак: ...

Забавные наблюдения о тИЦ
Не гоже, конечно вновь обсуждать тИЦ и всю эту пузомерку, но... Обратил внимание на тот факт, что: 1) Сайт занесен в ЯКу 2) тИЦ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru